View Javadoc
1   // Generated from org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4 by ANTLR 4.10.1
2   package org.apache.shardingsphere.sql.parser.autogen;
3   import org.antlr.v4.runtime.atn.*;
4   import org.antlr.v4.runtime.dfa.DFA;
5   import org.antlr.v4.runtime.*;
6   import org.antlr.v4.runtime.misc.*;
7   import org.antlr.v4.runtime.tree.*;
8   import java.util.List;
9   import java.util.Iterator;
10  import java.util.ArrayList;
11  
12  @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
13  public class SQLServerStatementParser extends Parser {
14  	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }
15  
16  	protected static final DFA[] _decisionToDFA;
17  	protected static final PredictionContextCache _sharedContextCache =
18  		new PredictionContextCache();
19  	public static final int
20  		T__0=1, BLOCK_COMMENT=2, INLINE_COMMENT=3, AND_=4, OR_=5, NOT_=6, TILDE_=7, 
21  		VERTICAL_BAR_=8, AMPERSAND_=9, SIGNED_LEFT_SHIFT_=10, SIGNED_RIGHT_SHIFT_=11, 
22  		CARET_=12, MOD_=13, COLON_=14, PLUS_=15, MINUS_=16, ASTERISK_=17, SLASH_=18, 
23  		BACKSLASH_=19, DOT_=20, DOT_ASTERISK_=21, SAFE_EQ_=22, DEQ_=23, EQ_=24, 
24  		NEQ_=25, GT_=26, GTE_=27, LT_=28, LTE_=29, POUND_=30, LP_=31, RP_=32, 
25  		LBE_=33, RBE_=34, LBT_=35, RBT_=36, COMMA_=37, DQ_=38, SQ_=39, BQ_=40, 
26  		QUESTION_=41, AT_=42, SEMI_=43, DOLLAR_=44, WS=45, SELECT=46, INSERT=47, 
27  		UPDATE=48, DELETE=49, CREATE=50, ALTER=51, DROP=52, TRUNCATE=53, SCHEMA=54, 
28  		GRANT=55, REVOKE=56, ADD=57, SET=58, TABLE=59, COLUMN=60, COLUMNS=61, 
29  		INDEX=62, CONSTRAINT=63, PRIMARY=64, UNIQUE=65, FOREIGN=66, KEY=67, POSITION=68, 
30  		PRECISION=69, FUNCTION=70, TRIGGER=71, PROCEDURE=72, PROC=73, VIEW=74, 
31  		INTO=75, VALUES=76, WITH=77, UNION=78, DISTINCT=79, CASE=80, WHEN=81, 
32  		CAST=82, TRIM=83, SUBSTRING=84, FROM=85, NATURAL=86, JOIN=87, FULL=88, 
33  		INNER=89, OUTER=90, LEFT=91, RIGHT=92, CROSS=93, USING=94, WHERE=95, AS=96, 
34  		ON=97, OFF=98, IF=99, ELSE=100, THEN=101, FOR=102, TO=103, AND=104, OR=105, 
35  		IS=106, NOT=107, NULL=108, TRUE=109, FALSE=110, EXISTS=111, BETWEEN=112, 
36  		IN=113, ALL=114, ANY=115, LIKE=116, ORDER=117, GROUP=118, BY=119, ASC=120, 
37  		DESC=121, HAVING=122, LIMIT=123, OFFSET=124, BEGIN=125, COMMIT=126, ROLLBACK=127, 
38  		SAVEPOINT=128, BOOLEAN=129, DOUBLE=130, CHAR=131, CHARACTER=132, ARRAY=133, 
39  		INTERVAL=134, DATE=135, TIME=136, TIMESTAMP=137, LOCALTIME=138, LOCALTIMESTAMP=139, 
40  		YEAR=140, QUARTER=141, MONTH=142, WEEK=143, DAY=144, HOUR=145, MINUTE=146, 
41  		SECOND=147, MICROSECOND=148, MAX=149, MIN=150, SUM=151, COUNT=152, AVG=153, 
42  		DEFAULT=154, CURRENT=155, ENABLE=156, DISABLE=157, CALL=158, INSTANCE=159, 
43  		PRESERVE=160, DO=161, DEFINER=162, CURRENT_USER=163, SQL=164, CASCADED=165, 
44  		LOCAL=166, CLOSE=167, OPEN=168, NEXT=169, NAME=170, COLLATION=171, NAMES=172, 
45  		INTEGER=173, REAL=174, DECIMAL=175, TYPE=176, BIT=177, SMALLINT=178, INT=179, 
46  		TINYINT=180, NUMERIC=181, FLOAT=182, BIGINT=183, TEXT=184, VARCHAR=185, 
47  		PERCENT=186, TIES=187, EXCEPT=188, INTERSECT=189, USE=190, MERGE=191, 
48  		LOOP=192, EXPAND=193, VIEWS=194, FAST=195, FORCE=196, KEEP=197, PLAN=198, 
49  		OPTIMIZE=199, SIMPLE=200, FORCED=201, HINT=202, READ_ONLY=203, DATABASE=204, 
50  		DECLARE=205, CURSOR=206, OF=207, RETURNS=208, DATEPART=209, RETURN=210, 
51  		READONLY=211, AT=212, PASSWORD=213, WITHOUT=214, APPLY=215, FOR_GENERATOR=216, 
52  		BINARY=217, ESCAPE=218, HIDDEN_=219, MOD=220, PARTITION=221, PARTITIONS=222, 
53  		TOP=223, ROW=224, ROWS=225, UNKNOWN=226, XOR=227, ALWAYS=228, CASCADE=229, 
54  		CHECK=230, GENERATED=231, NO=232, OPTION=233, PRIVILEGES=234, REFERENCES=235, 
55  		USER=236, ROLE=237, START=238, TRANSACTION=239, ACTION=240, ALGORITHM=241, 
56  		AUTO=242, BLOCKERS=243, CLUSTERED=244, NONCLUSTERED=245, COLLATE=246, 
57  		COLUMNSTORE=247, CONTENT=248, CONVERT=249, YEARS=250, MONTHS=251, WEEKS=252, 
58  		DAYS=253, MINUTES=254, DENY=255, DETERMINISTIC=256, DISTRIBUTION=257, 
59  		DOCUMENT=258, DURABILITY=259, ENCRYPTED=260, END=261, FILESTREAM=262, 
60  		FILETABLE=263, FILLFACTOR=264, FOLLOWING=265, HASH=266, HEAP=267, IDENTITY=268, 
61  		INBOUND=269, OUTBOUND=270, UNBOUNDED=271, INFINITE=272, LOGIN=273, MASKED=274, 
62  		MAXDOP=275, MOVE=276, NOCHECK=277, NONE=278, OBJECT=279, ONLINE=280, OVER=281, 
63  		PAGE=282, PAUSED=283, PERIOD=284, PERSISTED=285, PRECEDING=286, RANDOMIZED=287, 
64  		RANGE=288, REBUILD=289, REPLICATE=290, REPLICATION=291, RESUMABLE=292, 
65  		ROWGUIDCOL=293, SAVE=294, SELF=295, SPARSE=296, SWITCH=297, TRAN=298, 
66  		TRANCOUNT=299, ZONE=300, EXECUTE=301, EXEC=302, SESSION=303, CONNECT=304, 
67  		CONNECTION=305, CATALOG=306, CONTROL=307, CONCAT=308, TAKE=309, OWNERSHIP=310, 
68  		DEFINITION=311, APPLICATION=312, ASSEMBLY=313, SYMMETRIC=314, ASYMMETRIC=315, 
69  		SERVER=316, RECEIVE=317, CHANGE=318, TRACE=319, TRACKING=320, RESOURCES=321, 
70  		SETTINGS=322, STATE=323, AVAILABILITY=324, CREDENTIAL=325, ENDPOINT=326, 
71  		EVENT=327, NOTIFICATION=328, LINKED=329, AUDIT=330, DDL=331, XML=332, 
72  		IMPERSONATE=333, SECURABLES=334, AUTHENTICATE=335, EXTERNAL=336, ACCESS=337, 
73  		ADMINISTER=338, BULK=339, OPERATIONS=340, UNSAFE=341, SHUTDOWN=342, SCOPED=343, 
74  		CONFIGURATION=344, DATASPACE=345, SERVICE=346, CERTIFICATE=347, CONTRACT=348, 
75  		ENCRYPTION=349, MASTER=350, DATA=351, SOURCE=352, FILE=353, FORMAT=354, 
76  		LIBRARY=355, FULLTEXT=356, MASK=357, UNMASK=358, MESSAGE=359, REMOTE=360, 
77  		BINDING=361, ROUTE=362, SECURITY=363, POLICY=364, AGGREGATE=365, QUEUE=366, 
78  		RULE=367, SYNONYM=368, COLLECTION=369, SCRIPT=370, KILL=371, BACKUP=372, 
79  		LOG=373, SHOWPLAN=374, SUBSCRIBE=375, QUERY=376, NOTIFICATIONS=377, CHECKPOINT=378, 
80  		SEQUENCE=379, ABORT_AFTER_WAIT=380, ALLOW_PAGE_LOCKS=381, ALLOW_ROW_LOCKS=382, 
81  		ALL_SPARSE_COLUMNS=383, BUCKET_COUNT=384, COLUMNSTORE_ARCHIVE=385, COLUMN_ENCRYPTION_KEY=386, 
82  		COLUMN_SET=387, COMPRESSION_DELAY=388, DATABASE_DEAULT=389, DATA_COMPRESSION=390, 
83  		DATA_CONSISTENCY_CHECK=391, ENCRYPTION_TYPE=392, SYSTEM_TIME=393, SYSTEM_VERSIONING=394, 
84  		TEXTIMAGE_ON=395, WAIT_AT_LOW_PRIORITY=396, STATISTICS_INCREMENTAL=397, 
85  		STATISTICS_NORECOMPUTE=398, ROUND_ROBIN=399, SCHEMA_AND_DATA=400, SCHEMA_ONLY=401, 
86  		SORT_IN_TEMPDB=402, IGNORE_DUP_KEY=403, IMPLICIT_TRANSACTIONS=404, MAX_DURATION=405, 
87  		MEMORY_OPTIMIZED=406, MIGRATION_STATE=407, PAD_INDEX=408, REMOTE_DATA_ARCHIVE=409, 
88  		FILESTREAM_ON=410, FILETABLE_COLLATE_FILENAME=411, FILETABLE_DIRECTORY=412, 
89  		FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME=413, FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME=414, 
90  		FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME=415, FILTER_PREDICATE=416, HISTORY_RETENTION_PERIOD=417, 
91  		HISTORY_TABLE=418, LOCK_ESCALATION=419, DROP_EXISTING=420, ROW_NUMBER=421, 
92  		FETCH=422, FIRST=423, ONLY=424, MONEY=425, SMALLMONEY=426, DATETIMEOFFSET=427, 
93  		DATETIME=428, DATETIME2=429, SMALLDATETIME=430, NCHAR=431, NVARCHAR=432, 
94  		NTEXT=433, VARBINARY=434, IMAGE=435, SQL_VARIANT=436, UNIQUEIDENTIFIER=437, 
95  		HIERARCHYID=438, GEOMETRY=439, GEOGRAPHY=440, OUTPUT=441, INSERTED=442, 
96  		DELETED=443, ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS=444, ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES=445, 
97  		DISABLE_BATCH_MODE_ADAPTIVE_JOINS=446, DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK=447, 
98  		DISABLE_DEFERRED_COMPILATION_TV=448, DISABLE_INTERLEAVED_EXECUTION_TVF=449, 
99  		DISABLE_OPTIMIZED_NESTED_LOOP=450, DISABLE_OPTIMIZER_ROWGOAL=451, DISABLE_PARAMETER_SNIFFING=452, 
100 		DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK=453, DISABLE_TSQL_SCALAR_UDF_INLINING=454, 
101 		DISALLOW_BATCH_MODE=455, ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS=456, ENABLE_QUERY_OPTIMIZER_HOTFIXES=457, 
102 		FORCE_DEFAULT_CARDINALITY_ESTIMATION=458, FORCE_LEGACY_CARDINALITY_ESTIMATION=459, 
103 		QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n=460, QUERY_PLAN_PROFILE=461, EXTERNALPUSHDOWN=462, 
104 		SCALEOUTEXECUTION=463, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=464, KEEPFIXED=465, 
105 		MAX_GRANT_PERCENT=466, MIN_GRANT_PERCENT=467, MAXRECURSION=468, NO_PERFORMANCE_SPOOL=469, 
106 		PARAMETERIZATION=470, QUERYTRACEON=471, RECOMPILE=472, ROBUST=473, OPTIMIZE_FOR_SEQUENTIAL_KEY=474, 
107 		DATA_DELETION=475, FILTER_COLUMN=476, RETENTION_PERIOD=477, CONTAINMENT=478, 
108 		PARTIAL=479, FILENAME=480, SIZE=481, MAXSIZE=482, FILEGROWTH=483, UNLIMITED=484, 
109 		KB=485, MB=486, GB=487, TB=488, CONTAINS=489, MEMORY_OPTIMIZED_DATA=490, 
110 		FILEGROUP=491, NON_TRANSACTED_ACCESS=492, DB_CHAINING=493, TRUSTWORTHY=494, 
111 		FORWARD_ONLY=495, SCROLL=496, STATIC=497, KEYSET=498, DYNAMIC=499, FAST_FORWARD=500, 
112 		SCROLL_LOCKS=501, OPTIMISTIC=502, TYPE_WARNING=503, SCHEMABINDING=504, 
113 		CALLER=505, INPUT=506, CALLED=507, VARYING=508, OUT=509, OWNER=510, ATOMIC=511, 
114 		LANGUAGE=512, LEVEL=513, ISOLATION=514, SNAPSHOT=515, REPEATABLE=516, 
115 		READ=517, SERIALIZABLE=518, NATIVE_COMPILATION=519, VIEW_METADATA=520, 
116 		AFTER=521, INSTEAD=522, APPEND=523, INCREMENT=524, CYCLE=525, CACHE=526, 
117 		MINVALUE=527, MAXVALUE=528, RESTART=529, LOB_COMPACTION=530, COMPRESS_ALL_ROW_GROUPS=531, 
118 		REORGANIZE=532, RESUME=533, PAUSE=534, ABORT=535, INCLUDE=536, DISTRIBUTED=537, 
119 		MARK=538, WORK=539, REMOVE=540, AUTOGROW_SINGLE_FILE=541, AUTOGROW_ALL_FILES=542, 
120 		READWRITE=543, READ_WRITE=544, MODIFY=545, ACCELERATED_DATABASE_RECOVERY=546, 
121 		PERSISTENT_VERSION_STORE_FILEGROUP=547, IMMEDIATE=548, NO_WAIT=549, TARGET_RECOVERY_TIME=550, 
122 		SECONDS=551, HONOR_BROKER_PRIORITY=552, ERROR_BROKER_CONVERSATIONS=553, 
123 		NEW_BROKER=554, DISABLE_BROKER=555, ENABLE_BROKER=556, MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=557, 
124 		READ_COMMITTED_SNAPSHOT=558, ALLOW_SNAPSHOT_ISOLATION=559, RECURSIVE_TRIGGERS=560, 
125 		QUOTED_IDENTIFIER=561, NUMERIC_ROUNDABORT=562, CONCAT_NULL_YIELDS_NULL=563, 
126 		COMPATIBILITY_LEVEL=564, ARITHABORT=565, ANSI_WARNINGS=566, ANSI_PADDING=567, 
127 		ANSI_NULLS=568, ANSI_NULL_DEFAULT=569, PAGE_VERIFY=570, CHECKSUM=571, 
128 		TORN_PAGE_DETECTION=572, BULK_LOGGED=573, RECOVERY=574, TOTAL_EXECUTION_CPU_TIME_MS=575, 
129 		TOTAL_COMPILE_CPU_TIME_MS=576, STALE_CAPTURE_POLICY_THRESHOLD=577, EXECUTION_COUNT=578, 
130 		QUERY_CAPTURE_POLICY=579, WAIT_STATS_CAPTURE_MODE=580, MAX_PLANS_PER_QUERY=581, 
131 		QUERY_CAPTURE_MODE=582, SIZE_BASED_CLEANUP_MODE=583, INTERVAL_LENGTH_MINUTES=584, 
132 		MAX_STORAGE_SIZE_MB=585, DATA_FLUSH_INTERVAL_SECONDS=586, CLEANUP_POLICY=587, 
133 		CUSTOM=588, STALE_QUERY_THRESHOLD_DAYS=589, OPERATION_MODE=590, QUERY_STORE=591, 
134 		CURSOR_DEFAULT=592, GLOBAL=593, CURSOR_CLOSE_ON_COMMIT=594, HOURS=595, 
135 		CHANGE_RETENTION=596, AUTO_CLEANUP=597, CHANGE_TRACKING=598, AUTOMATIC_TUNING=599, 
136 		FORCE_LAST_GOOD_PLAN=600, AUTO_UPDATE_STATISTICS_ASYNC=601, AUTO_UPDATE_STATISTICS=602, 
137 		AUTO_SHRINK=603, AUTO_CREATE_STATISTICS=604, INCREMENTAL=605, AUTO_CLOSE=606, 
138 		DATA_RETENTION=607, TEMPORAL_HISTORY_RETENTION=608, EDITION=609, MIXED_PAGE_ALLOCATION=610, 
139 		DISABLED=611, ALLOWED=612, HADR=613, MULTI_USER=614, RESTRICTED_USER=615, 
140 		SINGLE_USER=616, OFFLINE=617, EMERGENCY=618, SUSPEND=619, DATE_CORRELATION_OPTIMIZATION=620, 
141 		ELASTIC_POOL=621, SERVICE_OBJECTIVE=622, DATABASE_NAME=623, ALLOW_CONNECTIONS=624, 
142 		GEO=625, NAMED=626, DATEFIRST=627, BACKUP_STORAGE_REDUNDANCY=628, FORCE_FAILOVER_ALLOW_DATA_LOSS=629, 
143 		SECONDARY=630, FAILOVER=631, DEFAULT_FULLTEXT_LANGUAGE=632, DEFAULT_LANGUAGE=633, 
144 		INLINE=634, NESTED_TRIGGERS=635, TRANSFORM_NOISE_WORDS=636, TWO_DIGIT_YEAR_CUTOFF=637, 
145 		PERSISTENT_LOG_BUFFER=638, DIRECTORY_NAME=639, DATEFORMAT=640, DELAYED_DURABILITY=641, 
146 		AUTHORIZATION=642, TRANSFER=643, EXPLAIN=644, WITH_RECOMMENDATIONS=645, 
147 		BATCH_SIZE=646, SETUSER=647, NORESET=648, DEFAULT_SCHEMA=649, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=650, 
148 		OLD_PASSWORD=651, PROVIDER=652, SID=653, UNCOMMITTED=654, COMMITTED=655, 
149 		STOPLIST=656, SEARCH=657, PROPERTY=658, LIST=659, SEND=660, MEMBER=661, 
150 		HASHED=662, MUST_CHANGE=663, DEFAULT_DATABASE=664, CHECK_EXPIRATION=665, 
151 		CHECK_POLICY=666, WINDOWS=667, UNLOCK=668, REVERT=669, COOKIE=670, BROWSE=671, 
152 		RAW=672, XMLDATA=673, XMLSCHEMA=674, ELEMENTS=675, XSINIL=676, ABSENT=677, 
153 		EXPLICIT=678, PATH=679, BASE64=680, ROOT=681, JSON=682, INCLUDE_NULL_VALUES=683, 
154 		WITHOUT_ARRAY_WRAPPER=684, XMLNAMESPACES=685, STATISTICS=686, FULLSCAN=687, 
155 		SAMPLE=688, RESAMPLE=689, NORECOMPUTE=690, AUTO_DROP=691, PERSIST_SAMPLE_PERCENT=692, 
156 		IDENTIFIER_=693, DELIMITED_IDENTIFIER_=694, STRING_=695, NUMBER_=696, 
157 		INT_NUM_=697, FLOAT_NUM_=698, DECIMAL_NUM_=699, HEX_DIGIT_=700, BIT_NUM_=701, 
158 		NCHAR_TEXT=702;
159 	public static final int
160 		RULE_execute = 0, RULE_setTransaction = 1, RULE_isolationLevel = 2, RULE_setImplicitTransactions = 3, 
161 		RULE_implicitTransactionsValue = 4, RULE_beginTransaction = 5, RULE_beginDistributedTransaction = 6, 
162 		RULE_commit = 7, RULE_commitWork = 8, RULE_rollback = 9, RULE_rollbackWork = 10, 
163 		RULE_savepoint = 11, RULE_parameterMarker = 12, RULE_literals = 13, RULE_stringLiterals = 14, 
164 		RULE_numberLiterals = 15, RULE_dateTimeLiterals = 16, RULE_hexadecimalLiterals = 17, 
165 		RULE_bitValueLiterals = 18, RULE_booleanLiterals = 19, RULE_nullValueLiterals = 20, 
166 		RULE_identifier = 21, RULE_regularIdentifier = 22, RULE_delimitedIdentifier = 23, 
167 		RULE_unreservedWord = 24, RULE_databaseName = 25, RULE_schemaName = 26, 
168 		RULE_functionName = 27, RULE_procedureName = 28, RULE_viewName = 29, RULE_triggerName = 30, 
169 		RULE_sequenceName = 31, RULE_tableName = 32, RULE_queueName = 33, RULE_contractName = 34, 
170 		RULE_serviceName = 35, RULE_columnName = 36, RULE_scriptVariableName = 37, 
171 		RULE_owner = 38, RULE_name = 39, RULE_columnNames = 40, RULE_columnNamesWithSort = 41, 
172 		RULE_tableNames = 42, RULE_indexName = 43, RULE_constraintName = 44, RULE_collationName = 45, 
173 		RULE_alias = 46, RULE_dataTypeLength = 47, RULE_primaryKey = 48, RULE_expr = 49, 
174 		RULE_andOperator = 50, RULE_orOperator = 51, RULE_notOperator = 52, RULE_booleanPrimary = 53, 
175 		RULE_comparisonOperator = 54, RULE_predicate = 55, RULE_bitExpr = 56, 
176 		RULE_simpleExpr = 57, RULE_functionCall = 58, RULE_aggregationFunction = 59, 
177 		RULE_aggregationFunctionName = 60, RULE_distinct = 61, RULE_specialFunction = 62, 
178 		RULE_castFunction = 63, RULE_convertFunction = 64, RULE_charFunction = 65, 
179 		RULE_regularFunction = 66, RULE_regularFunctionName = 67, RULE_caseExpression = 68, 
180 		RULE_caseWhen = 69, RULE_caseElse = 70, RULE_privateExprOfDb = 71, RULE_orderByClause = 72, 
181 		RULE_orderByItem = 73, RULE_dataType = 74, RULE_dataTypeName = 75, RULE_atTimeZoneExpr = 76, 
182 		RULE_castExpr = 77, RULE_convertExpr = 78, RULE_windowedFunction = 79, 
183 		RULE_overClause = 80, RULE_partitionByClause = 81, RULE_rowRangeClause = 82, 
184 		RULE_windowFrameExtent = 83, RULE_windowFrameBetween = 84, RULE_windowFrameBound = 85, 
185 		RULE_windowFramePreceding = 86, RULE_windowFrameFollowing = 87, RULE_columnNameWithSort = 88, 
186 		RULE_indexOption = 89, RULE_compressionOption = 90, RULE_eqTime = 91, 
187 		RULE_eqOnOffOption = 92, RULE_eqKey = 93, RULE_eqOnOff = 94, RULE_onPartitionClause = 95, 
188 		RULE_partitionExpressions = 96, RULE_partitionExpression = 97, RULE_numberRange = 98, 
189 		RULE_lowPriorityLockWait = 99, RULE_onLowPriorLockWait = 100, RULE_ignoredIdentifier = 101, 
190 		RULE_ignoredIdentifiers = 102, RULE_matchNone = 103, RULE_variableName = 104, 
191 		RULE_executeAsClause = 105, RULE_transactionName = 106, RULE_transactionVariableName = 107, 
192 		RULE_savepointName = 108, RULE_savepointVariableName = 109, RULE_entityType = 110, 
193 		RULE_ifExists = 111, RULE_call = 112, RULE_explain = 113, RULE_explainableStatement = 114, 
194 		RULE_createTable = 115, RULE_createTableClause = 116, RULE_createIndex = 117, 
195 		RULE_createDatabase = 118, RULE_createFunction = 119, RULE_createProcedure = 120, 
196 		RULE_createView = 121, RULE_createTrigger = 122, RULE_createSequence = 123, 
197 		RULE_createService = 124, RULE_createSchema = 125, RULE_alterTable = 126, 
198 		RULE_alterIndex = 127, RULE_alterDatabase = 128, RULE_alterProcedure = 129, 
199 		RULE_alterFunction = 130, RULE_alterView = 131, RULE_alterTrigger = 132, 
200 		RULE_alterSequence = 133, RULE_alterService = 134, RULE_alterSchema = 135, 
201 		RULE_dropTable = 136, RULE_dropIndex = 137, RULE_dropDatabase = 138, RULE_dropFunction = 139, 
202 		RULE_dropProcedure = 140, RULE_dropView = 141, RULE_dropTrigger = 142, 
203 		RULE_dropSequence = 143, RULE_dropService = 144, RULE_dropSchema = 145, 
204 		RULE_truncateTable = 146, RULE_updateStatistics = 147, RULE_statisticsWithClause = 148, 
205 		RULE_sampleOption = 149, RULE_statisticsOptions = 150, RULE_statisticsOption = 151, 
206 		RULE_fileTableClause = 152, RULE_createDefinitionClause = 153, RULE_createTableDefinitions = 154, 
207 		RULE_createTableDefinition = 155, RULE_columnDefinition = 156, RULE_columnDefinitionOption = 157, 
208 		RULE_encryptedOptions = 158, RULE_columnConstraint = 159, RULE_computedColumnConstraint = 160, 
209 		RULE_computedColumnForeignKeyConstraint = 161, RULE_computedColumnForeignKeyOnAction = 162, 
210 		RULE_primaryKeyConstraint = 163, RULE_diskTablePrimaryKeyConstraintOption = 164, 
211 		RULE_clusterOption = 165, RULE_primaryKeyWithClause = 166, RULE_primaryKeyOnClause = 167, 
212 		RULE_onSchemaColumn = 168, RULE_onFileGroup = 169, RULE_onString = 170, 
213 		RULE_memoryTablePrimaryKeyConstraintOption = 171, RULE_withBucket = 172, 
214 		RULE_columnForeignKeyConstraint = 173, RULE_foreignKeyOnAction = 174, 
215 		RULE_foreignKeyOn = 175, RULE_checkConstraint = 176, RULE_columnIndex = 177, 
216 		RULE_withIndexOption = 178, RULE_indexOnClause = 179, RULE_onDefault = 180, 
217 		RULE_fileStreamOn = 181, RULE_columnConstraints = 182, RULE_computedColumnDefinition = 183, 
218 		RULE_columnSetDefinition = 184, RULE_tableConstraint = 185, RULE_tablePrimaryConstraint = 186, 
219 		RULE_primaryKeyUnique = 187, RULE_diskTablePrimaryConstraintOption = 188, 
220 		RULE_memoryTablePrimaryConstraintOption = 189, RULE_hashWithBucket = 190, 
221 		RULE_tableForeignKeyConstraint = 191, RULE_tableIndex = 192, RULE_indexNameOption = 193, 
222 		RULE_indexOptions = 194, RULE_periodClause = 195, RULE_partitionScheme = 196, 
223 		RULE_fileGroup = 197, RULE_tableOptions = 198, RULE_tableOption = 199, 
224 		RULE_dataDelectionOption = 200, RULE_tableStretchOptions = 201, RULE_tableStretchOption = 202, 
225 		RULE_migrationState_ = 203, RULE_tableOperationOption = 204, RULE_distributionOption = 205, 
226 		RULE_dataWareHouseTableOption = 206, RULE_dataWareHousePartitionOption = 207, 
227 		RULE_createIndexSpecification = 208, RULE_alterDefinitionClause = 209, 
228 		RULE_addColumnSpecification = 210, RULE_modifyColumnSpecification = 211, 
229 		RULE_alterColumnOperation = 212, RULE_alterColumnAddOptions = 213, RULE_alterColumnAddOption = 214, 
230 		RULE_constraintForColumn = 215, RULE_generatedColumnNamesClause = 216, 
231 		RULE_generatedColumnNameClause = 217, RULE_generatedColumnName = 218, 
232 		RULE_alterDrop = 219, RULE_alterTableDropConstraint = 220, RULE_dropConstraintName = 221, 
233 		RULE_dropConstraintWithClause = 222, RULE_dropConstraintOption = 223, 
234 		RULE_onOffOption = 224, RULE_dropColumnSpecification = 225, RULE_dropIndexSpecification = 226, 
235 		RULE_alterCheckConstraint = 227, RULE_alterTableTrigger = 228, RULE_alterSwitch = 229, 
236 		RULE_alterSet = 230, RULE_setFileStreamClause = 231, RULE_setSystemVersionClause = 232, 
237 		RULE_alterSetOnClause = 233, RULE_dataConsistencyCheckClause = 234, RULE_historyRetentionPeriodClause = 235, 
238 		RULE_historyRetentionPeriod = 236, RULE_alterTableTableIndex = 237, RULE_indexWithName = 238, 
239 		RULE_indexNonClusterClause = 239, RULE_alterTableIndexOnClause = 240, 
240 		RULE_indexClusterClause = 241, RULE_alterTableOption = 242, RULE_onHistoryTableClause = 243, 
241 		RULE_createDatabaseClause = 244, RULE_fileDefinitionClause = 245, RULE_databaseOption = 246, 
242 		RULE_fileStreamOption = 247, RULE_fileSpec = 248, RULE_databaseFileSpecOption = 249, 
243 		RULE_databaseFileGroup = 250, RULE_databaseFileGroupContains = 251, RULE_databaseLogOns = 252, 
244 		RULE_declareVariable = 253, RULE_variable = 254, RULE_tableVariable = 255, 
245 		RULE_variTableTypeDefinition = 256, RULE_tableVariableClause = 257, RULE_variableTableColumnDefinition = 258, 
246 		RULE_variableTableColumnConstraint = 259, RULE_variableTableConstraint = 260, 
247 		RULE_setVariable = 261, RULE_setVariableClause = 262, RULE_cursorVariable = 263, 
248 		RULE_cursorClause = 264, RULE_compoundOperation = 265, RULE_funcParameters = 266, 
249 		RULE_funcReturns = 267, RULE_funcMutiReturn = 268, RULE_funcInlineReturn = 269, 
250 		RULE_funcScalarReturn = 270, RULE_tableTypeDefinition = 271, RULE_compoundStatement = 272, 
251 		RULE_functionOption = 273, RULE_validStatement = 274, RULE_procParameters = 275, 
252 		RULE_procParameter = 276, RULE_createOrAlterProcClause = 277, RULE_withCreateProcOption = 278, 
253 		RULE_procOption = 279, RULE_procAsClause = 280, RULE_procSetOption = 281, 
254 		RULE_createOrAlterViewClause = 282, RULE_viewAttribute = 283, RULE_withCommonTableExpr = 284, 
255 		RULE_commonTableExpr = 285, RULE_createTriggerClause = 286, RULE_dmlTriggerOption = 287, 
256 		RULE_methodSpecifier = 288, RULE_triggerTarget = 289, RULE_createOrAlterSequenceClause = 290, 
257 		RULE_createIndexClause = 291, RULE_filterPredicate = 292, RULE_conjunct = 293, 
258 		RULE_alterIndexClause = 294, RULE_relationalIndexOption = 295, RULE_partitionNumberRange = 296, 
259 		RULE_reorganizeOption = 297, RULE_setIndexOption = 298, RULE_resumableIndexOptions = 299, 
260 		RULE_alterDatabaseClause = 300, RULE_addSecondaryOption = 301, RULE_editionOptions = 302, 
261 		RULE_serviceObjective = 303, RULE_alterDatabaseOptionSpec = 304, RULE_fileAndFilegroupOptions = 305, 
262 		RULE_addOrModifyFilegroups = 306, RULE_filegroupUpdatabilityOption = 307, 
263 		RULE_addOrModifyFiles = 308, RULE_acceleratedDatabaseRecovery = 309, RULE_autoOption = 310, 
264 		RULE_automaticTuningOption = 311, RULE_changeTrackingOption = 312, RULE_changeTrackingOptionList = 313, 
265 		RULE_cursorOption = 314, RULE_externalAccessOption = 315, RULE_queryStoreOptions = 316, 
266 		RULE_queryStoreOptionList = 317, RULE_queryCapturePolicyOptionList = 318, 
267 		RULE_recoveryOption = 319, RULE_sqlOption = 320, RULE_snapshotOption = 321, 
268 		RULE_serviceBrokerOption = 322, RULE_targetRecoveryTimeOption = 323, RULE_termination = 324, 
269 		RULE_createServiceClause = 325, RULE_alterServiceClause = 326, RULE_alterServiceOptArg = 327, 
270 		RULE_schemaNameClause = 328, RULE_schemaElement = 329, RULE_createTableAsSelectClause = 330, 
271 		RULE_createTableAsSelect = 331, RULE_createRemoteTableAsSelect = 332, 
272 		RULE_withDistributionOption = 333, RULE_optionQueryHintClause = 334, RULE_insert = 335, 
273 		RULE_insertDefaultValue = 336, RULE_insertValuesClause = 337, RULE_insertSelectClause = 338, 
274 		RULE_insertExecClause = 339, RULE_exec = 340, RULE_update = 341, RULE_assignment = 342, 
275 		RULE_setAssignmentsClause = 343, RULE_assignmentValues = 344, RULE_assignmentValue = 345, 
276 		RULE_delete = 346, RULE_singleTableClause = 347, RULE_multipleTablesClause = 348, 
277 		RULE_multipleTableNames = 349, RULE_select = 350, RULE_aggregationClause = 351, 
278 		RULE_selectClause = 352, RULE_duplicateSpecification = 353, RULE_projections = 354, 
279 		RULE_projection = 355, RULE_top = 356, RULE_topNum = 357, RULE_unqualifiedShorthand = 358, 
280 		RULE_qualifiedShorthand = 359, RULE_fromClause = 360, RULE_tableReferences = 361, 
281 		RULE_tableReference = 362, RULE_tableFactor = 363, RULE_joinedTable = 364, 
282 		RULE_joinSpecification = 365, RULE_whereClause = 366, RULE_groupByClause = 367, 
283 		RULE_havingClause = 368, RULE_subquery = 369, RULE_withClause = 370, RULE_cteClauseSet = 371, 
284 		RULE_cteClause = 372, RULE_outputClause = 373, RULE_outputWithColumns = 374, 
285 		RULE_outputWithColumn = 375, RULE_outputWithAaterisk = 376, RULE_outputTableName = 377, 
286 		RULE_queryHint = 378, RULE_useHitName = 379, RULE_forClause = 380, RULE_forXmlClause = 381, 
287 		RULE_commonDirectivesForXml = 382, RULE_forJsonClause = 383, RULE_selectWithClause = 384, 
288 		RULE_xmlNamespacesClause = 385, RULE_xmlNamespaceDeclarationItem = 386, 
289 		RULE_xmlNamespaceUri = 387, RULE_xmlNamespacePrefix = 388, RULE_xmlDefaultNamespaceDeclarationItem = 389, 
290 		RULE_grant = 390, RULE_grantClassPrivilegesClause = 391, RULE_grantClassTypePrivilegesClause = 392, 
291 		RULE_classPrivileges = 393, RULE_onClassClause = 394, RULE_classTypePrivileges = 395, 
292 		RULE_onClassTypeClause = 396, RULE_securable = 397, RULE_principal = 398, 
293 		RULE_revoke = 399, RULE_revokeClassPrivilegesClause = 400, RULE_revokeClassTypePrivilegesClause = 401, 
294 		RULE_deny = 402, RULE_denyClassPrivilegesClause = 403, RULE_denyClassTypePrivilegesClause = 404, 
295 		RULE_optionForClause = 405, RULE_privilegeType = 406, RULE_objectPermission = 407, 
296 		RULE_serverPermission = 408, RULE_serverPrincipalPermission = 409, RULE_databasePermission = 410, 
297 		RULE_databasePrincipalPermission = 411, RULE_databaseUserPermission = 412, 
298 		RULE_databaseRolePermission = 413, RULE_applicationRolePermission = 414, 
299 		RULE_databaseScopedCredentialPermission = 415, RULE_schemaPermission = 416, 
300 		RULE_searchPropertyListPermission = 417, RULE_serviceBrokerPermission = 418, 
301 		RULE_serviceBrokerContractsPermission = 419, RULE_serviceBrokerMessageTypesPermission = 420, 
302 		RULE_serviceBrokerRemoteServiceBindingsPermission = 421, RULE_serviceBrokerRoutesPermission = 422, 
303 		RULE_serviceBrokerServicesPermission = 423, RULE_endpointPermission = 424, 
304 		RULE_certificatePermission = 425, RULE_symmetricKeyPermission = 426, RULE_asymmetricKeyPermission = 427, 
305 		RULE_assemblyPermission = 428, RULE_availabilityGroupPermission = 429, 
306 		RULE_fullTextPermission = 430, RULE_fullTextCatalogPermission = 431, RULE_fullTextStoplistPermission = 432, 
307 		RULE_typePermission = 433, RULE_xmlSchemaCollectionPermission = 434, RULE_systemObjectPermission = 435, 
308 		RULE_class_ = 436, RULE_classItem = 437, RULE_classType = 438, RULE_roleClause = 439, 
309 		RULE_setUser = 440, RULE_createUser = 441, RULE_createUserLoginClause = 442, 
310 		RULE_createUserWindowsPrincipalClause = 443, RULE_createUserLoginWindowsPrincipalClause = 444, 
311 		RULE_createUserWithoutLoginClause = 445, RULE_optionsList = 446, RULE_limitedOptionsList = 447, 
312 		RULE_createUserFromExternalProviderClause = 448, RULE_createUserWithDefaultSchema = 449, 
313 		RULE_createUserWithAzureActiveDirectoryPrincipalClause = 450, RULE_windowsPrincipal = 451, 
314 		RULE_azureActiveDirectoryPrincipal = 452, RULE_userName = 453, RULE_ignoredNameIdentifier = 454, 
315 		RULE_dropUser = 455, RULE_alterUser = 456, RULE_setItem = 457, RULE_createRole = 458, 
316 		RULE_dropRole = 459, RULE_alterRole = 460, RULE_createLogin = 461, RULE_createLoginForSQLServerClause = 462, 
317 		RULE_createLoginForSQLServerOptionList = 463, RULE_createLoginForSQLServerOptionListClause = 464, 
318 		RULE_hashedPassword = 465, RULE_sid = 466, RULE_sources = 467, RULE_windowsOptions = 468, 
319 		RULE_createLoginForAzureSQLDatabaseClause = 469, RULE_createLoginForAzureSQLDatabaseOptionList = 470, 
320 		RULE_createLoginForAzureManagedInstanceClause = 471, RULE_azureManagedInstanceOptionList = 472, 
321 		RULE_createLoginForAzureSynapseAnalyticsClause = 473, RULE_createLoginForAzureSynapseAnalyticsOptionList = 474, 
322 		RULE_createLoginForAnalyticsPlatformSystemClause = 475, RULE_createLoginForAnalyticsPlatformSystemOptionList = 476, 
323 		RULE_createLoginForAnalyticsPlatformSystemOptionListClause = 477, RULE_dropLogin = 478, 
324 		RULE_alterLogin = 479, RULE_statusOptionClause = 480, RULE_setOptionClause = 481, 
325 		RULE_passwordOptionClause = 482, RULE_cryptographicCredentialsOptionClause = 483, 
326 		RULE_revert = 484;
327 	private static String[] makeRuleNames() {
328 		return new String[] {
329 			"execute", "setTransaction", "isolationLevel", "setImplicitTransactions", 
330 			"implicitTransactionsValue", "beginTransaction", "beginDistributedTransaction", 
331 			"commit", "commitWork", "rollback", "rollbackWork", "savepoint", "parameterMarker", 
332 			"literals", "stringLiterals", "numberLiterals", "dateTimeLiterals", "hexadecimalLiterals", 
333 			"bitValueLiterals", "booleanLiterals", "nullValueLiterals", "identifier", 
334 			"regularIdentifier", "delimitedIdentifier", "unreservedWord", "databaseName", 
335 			"schemaName", "functionName", "procedureName", "viewName", "triggerName", 
336 			"sequenceName", "tableName", "queueName", "contractName", "serviceName", 
337 			"columnName", "scriptVariableName", "owner", "name", "columnNames", "columnNamesWithSort", 
338 			"tableNames", "indexName", "constraintName", "collationName", "alias", 
339 			"dataTypeLength", "primaryKey", "expr", "andOperator", "orOperator", 
340 			"notOperator", "booleanPrimary", "comparisonOperator", "predicate", "bitExpr", 
341 			"simpleExpr", "functionCall", "aggregationFunction", "aggregationFunctionName", 
342 			"distinct", "specialFunction", "castFunction", "convertFunction", "charFunction", 
343 			"regularFunction", "regularFunctionName", "caseExpression", "caseWhen", 
344 			"caseElse", "privateExprOfDb", "orderByClause", "orderByItem", "dataType", 
345 			"dataTypeName", "atTimeZoneExpr", "castExpr", "convertExpr", "windowedFunction", 
346 			"overClause", "partitionByClause", "rowRangeClause", "windowFrameExtent", 
347 			"windowFrameBetween", "windowFrameBound", "windowFramePreceding", "windowFrameFollowing", 
348 			"columnNameWithSort", "indexOption", "compressionOption", "eqTime", "eqOnOffOption", 
349 			"eqKey", "eqOnOff", "onPartitionClause", "partitionExpressions", "partitionExpression", 
350 			"numberRange", "lowPriorityLockWait", "onLowPriorLockWait", "ignoredIdentifier", 
351 			"ignoredIdentifiers", "matchNone", "variableName", "executeAsClause", 
352 			"transactionName", "transactionVariableName", "savepointName", "savepointVariableName", 
353 			"entityType", "ifExists", "call", "explain", "explainableStatement", 
354 			"createTable", "createTableClause", "createIndex", "createDatabase", 
355 			"createFunction", "createProcedure", "createView", "createTrigger", "createSequence", 
356 			"createService", "createSchema", "alterTable", "alterIndex", "alterDatabase", 
357 			"alterProcedure", "alterFunction", "alterView", "alterTrigger", "alterSequence", 
358 			"alterService", "alterSchema", "dropTable", "dropIndex", "dropDatabase", 
359 			"dropFunction", "dropProcedure", "dropView", "dropTrigger", "dropSequence", 
360 			"dropService", "dropSchema", "truncateTable", "updateStatistics", "statisticsWithClause", 
361 			"sampleOption", "statisticsOptions", "statisticsOption", "fileTableClause", 
362 			"createDefinitionClause", "createTableDefinitions", "createTableDefinition", 
363 			"columnDefinition", "columnDefinitionOption", "encryptedOptions", "columnConstraint", 
364 			"computedColumnConstraint", "computedColumnForeignKeyConstraint", "computedColumnForeignKeyOnAction", 
365 			"primaryKeyConstraint", "diskTablePrimaryKeyConstraintOption", "clusterOption", 
366 			"primaryKeyWithClause", "primaryKeyOnClause", "onSchemaColumn", "onFileGroup", 
367 			"onString", "memoryTablePrimaryKeyConstraintOption", "withBucket", "columnForeignKeyConstraint", 
368 			"foreignKeyOnAction", "foreignKeyOn", "checkConstraint", "columnIndex", 
369 			"withIndexOption", "indexOnClause", "onDefault", "fileStreamOn", "columnConstraints", 
370 			"computedColumnDefinition", "columnSetDefinition", "tableConstraint", 
371 			"tablePrimaryConstraint", "primaryKeyUnique", "diskTablePrimaryConstraintOption", 
372 			"memoryTablePrimaryConstraintOption", "hashWithBucket", "tableForeignKeyConstraint", 
373 			"tableIndex", "indexNameOption", "indexOptions", "periodClause", "partitionScheme", 
374 			"fileGroup", "tableOptions", "tableOption", "dataDelectionOption", "tableStretchOptions", 
375 			"tableStretchOption", "migrationState_", "tableOperationOption", "distributionOption", 
376 			"dataWareHouseTableOption", "dataWareHousePartitionOption", "createIndexSpecification", 
377 			"alterDefinitionClause", "addColumnSpecification", "modifyColumnSpecification", 
378 			"alterColumnOperation", "alterColumnAddOptions", "alterColumnAddOption", 
379 			"constraintForColumn", "generatedColumnNamesClause", "generatedColumnNameClause", 
380 			"generatedColumnName", "alterDrop", "alterTableDropConstraint", "dropConstraintName", 
381 			"dropConstraintWithClause", "dropConstraintOption", "onOffOption", "dropColumnSpecification", 
382 			"dropIndexSpecification", "alterCheckConstraint", "alterTableTrigger", 
383 			"alterSwitch", "alterSet", "setFileStreamClause", "setSystemVersionClause", 
384 			"alterSetOnClause", "dataConsistencyCheckClause", "historyRetentionPeriodClause", 
385 			"historyRetentionPeriod", "alterTableTableIndex", "indexWithName", "indexNonClusterClause", 
386 			"alterTableIndexOnClause", "indexClusterClause", "alterTableOption", 
387 			"onHistoryTableClause", "createDatabaseClause", "fileDefinitionClause", 
388 			"databaseOption", "fileStreamOption", "fileSpec", "databaseFileSpecOption", 
389 			"databaseFileGroup", "databaseFileGroupContains", "databaseLogOns", "declareVariable", 
390 			"variable", "tableVariable", "variTableTypeDefinition", "tableVariableClause", 
391 			"variableTableColumnDefinition", "variableTableColumnConstraint", "variableTableConstraint", 
392 			"setVariable", "setVariableClause", "cursorVariable", "cursorClause", 
393 			"compoundOperation", "funcParameters", "funcReturns", "funcMutiReturn", 
394 			"funcInlineReturn", "funcScalarReturn", "tableTypeDefinition", "compoundStatement", 
395 			"functionOption", "validStatement", "procParameters", "procParameter", 
396 			"createOrAlterProcClause", "withCreateProcOption", "procOption", "procAsClause", 
397 			"procSetOption", "createOrAlterViewClause", "viewAttribute", "withCommonTableExpr", 
398 			"commonTableExpr", "createTriggerClause", "dmlTriggerOption", "methodSpecifier", 
399 			"triggerTarget", "createOrAlterSequenceClause", "createIndexClause", 
400 			"filterPredicate", "conjunct", "alterIndexClause", "relationalIndexOption", 
401 			"partitionNumberRange", "reorganizeOption", "setIndexOption", "resumableIndexOptions", 
402 			"alterDatabaseClause", "addSecondaryOption", "editionOptions", "serviceObjective", 
403 			"alterDatabaseOptionSpec", "fileAndFilegroupOptions", "addOrModifyFilegroups", 
404 			"filegroupUpdatabilityOption", "addOrModifyFiles", "acceleratedDatabaseRecovery", 
405 			"autoOption", "automaticTuningOption", "changeTrackingOption", "changeTrackingOptionList", 
406 			"cursorOption", "externalAccessOption", "queryStoreOptions", "queryStoreOptionList", 
407 			"queryCapturePolicyOptionList", "recoveryOption", "sqlOption", "snapshotOption", 
408 			"serviceBrokerOption", "targetRecoveryTimeOption", "termination", "createServiceClause", 
409 			"alterServiceClause", "alterServiceOptArg", "schemaNameClause", "schemaElement", 
410 			"createTableAsSelectClause", "createTableAsSelect", "createRemoteTableAsSelect", 
411 			"withDistributionOption", "optionQueryHintClause", "insert", "insertDefaultValue", 
412 			"insertValuesClause", "insertSelectClause", "insertExecClause", "exec", 
413 			"update", "assignment", "setAssignmentsClause", "assignmentValues", "assignmentValue", 
414 			"delete", "singleTableClause", "multipleTablesClause", "multipleTableNames", 
415 			"select", "aggregationClause", "selectClause", "duplicateSpecification", 
416 			"projections", "projection", "top", "topNum", "unqualifiedShorthand", 
417 			"qualifiedShorthand", "fromClause", "tableReferences", "tableReference", 
418 			"tableFactor", "joinedTable", "joinSpecification", "whereClause", "groupByClause", 
419 			"havingClause", "subquery", "withClause", "cteClauseSet", "cteClause", 
420 			"outputClause", "outputWithColumns", "outputWithColumn", "outputWithAaterisk", 
421 			"outputTableName", "queryHint", "useHitName", "forClause", "forXmlClause", 
422 			"commonDirectivesForXml", "forJsonClause", "selectWithClause", "xmlNamespacesClause", 
423 			"xmlNamespaceDeclarationItem", "xmlNamespaceUri", "xmlNamespacePrefix", 
424 			"xmlDefaultNamespaceDeclarationItem", "grant", "grantClassPrivilegesClause", 
425 			"grantClassTypePrivilegesClause", "classPrivileges", "onClassClause", 
426 			"classTypePrivileges", "onClassTypeClause", "securable", "principal", 
427 			"revoke", "revokeClassPrivilegesClause", "revokeClassTypePrivilegesClause", 
428 			"deny", "denyClassPrivilegesClause", "denyClassTypePrivilegesClause", 
429 			"optionForClause", "privilegeType", "objectPermission", "serverPermission", 
430 			"serverPrincipalPermission", "databasePermission", "databasePrincipalPermission", 
431 			"databaseUserPermission", "databaseRolePermission", "applicationRolePermission", 
432 			"databaseScopedCredentialPermission", "schemaPermission", "searchPropertyListPermission", 
433 			"serviceBrokerPermission", "serviceBrokerContractsPermission", "serviceBrokerMessageTypesPermission", 
434 			"serviceBrokerRemoteServiceBindingsPermission", "serviceBrokerRoutesPermission", 
435 			"serviceBrokerServicesPermission", "endpointPermission", "certificatePermission", 
436 			"symmetricKeyPermission", "asymmetricKeyPermission", "assemblyPermission", 
437 			"availabilityGroupPermission", "fullTextPermission", "fullTextCatalogPermission", 
438 			"fullTextStoplistPermission", "typePermission", "xmlSchemaCollectionPermission", 
439 			"systemObjectPermission", "class_", "classItem", "classType", "roleClause", 
440 			"setUser", "createUser", "createUserLoginClause", "createUserWindowsPrincipalClause", 
441 			"createUserLoginWindowsPrincipalClause", "createUserWithoutLoginClause", 
442 			"optionsList", "limitedOptionsList", "createUserFromExternalProviderClause", 
443 			"createUserWithDefaultSchema", "createUserWithAzureActiveDirectoryPrincipalClause", 
444 			"windowsPrincipal", "azureActiveDirectoryPrincipal", "userName", "ignoredNameIdentifier", 
445 			"dropUser", "alterUser", "setItem", "createRole", "dropRole", "alterRole", 
446 			"createLogin", "createLoginForSQLServerClause", "createLoginForSQLServerOptionList", 
447 			"createLoginForSQLServerOptionListClause", "hashedPassword", "sid", "sources", 
448 			"windowsOptions", "createLoginForAzureSQLDatabaseClause", "createLoginForAzureSQLDatabaseOptionList", 
449 			"createLoginForAzureManagedInstanceClause", "azureManagedInstanceOptionList", 
450 			"createLoginForAzureSynapseAnalyticsClause", "createLoginForAzureSynapseAnalyticsOptionList", 
451 			"createLoginForAnalyticsPlatformSystemClause", "createLoginForAnalyticsPlatformSystemOptionList", 
452 			"createLoginForAnalyticsPlatformSystemOptionListClause", "dropLogin", 
453 			"alterLogin", "statusOptionClause", "setOptionClause", "passwordOptionClause", 
454 			"cryptographicCredentialsOptionClause", "revert"
455 		};
456 	}
457 	public static final String[] ruleNames = makeRuleNames();
458 
459 	private static String[] makeLiteralNames() {
460 		return new String[] {
461 			null, "'Default does not match anything'", null, null, "'&&'", "'||'", 
462 			"'!'", "'~'", "'|'", "'&'", "'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", 
463 			"'-'", "'*'", "'/'", "'\\'", "'.'", "'.*'", "'<=>'", "'=='", "'='", null, 
464 			"'>'", "'>='", "'<'", "'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", 
465 			"']'", "','", "'\"'", "'''", "'`'", "'?'", "'@'", "';'", "'$'", null, 
466 			null, null, null, null, null, null, null, null, null, null, null, null, 
467 			null, null, null, null, null, null, null, null, null, null, null, null, 
468 			null, null, null, null, null, null, null, null, null, null, null, null, 
469 			null, null, null, null, null, null, null, null, null, null, null, null, 
470 			null, null, null, null, null, null, null, null, null, null, null, null, 
471 			null, null, null, null, null, null, null, null, null, null, null, null, 
472 			null, null, null, null, null, null, null, null, null, null, null, null, 
473 			null, null, null, null, null, null, null, null, null, null, null, null, 
474 			null, null, null, null, null, null, null, null, null, null, null, null, 
475 			null, null, null, null, null, null, null, null, null, null, null, null, 
476 			null, null, null, null, null, null, null, null, null, null, null, null, 
477 			null, null, null, null, null, null, null, null, null, null, null, null, 
478 			null, null, null, null, null, null, null, null, null, null, null, null, 
479 			null, null, null, null, null, null, null, null, null, null, null, null, 
480 			null, null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'"
481 		};
482 	}
483 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
484 	private static String[] makeSymbolicNames() {
485 		return new String[] {
486 			null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
487 			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
488 			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
489 			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "NEQ_", 
490 			"GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", "RBE_", 
491 			"LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "AT_", "SEMI_", 
492 			"DOLLAR_", "WS", "SELECT", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", 
493 			"DROP", "TRUNCATE", "SCHEMA", "GRANT", "REVOKE", "ADD", "SET", "TABLE", 
494 			"COLUMN", "COLUMNS", "INDEX", "CONSTRAINT", "PRIMARY", "UNIQUE", "FOREIGN", 
495 			"KEY", "POSITION", "PRECISION", "FUNCTION", "TRIGGER", "PROCEDURE", "PROC", 
496 			"VIEW", "INTO", "VALUES", "WITH", "UNION", "DISTINCT", "CASE", "WHEN", 
497 			"CAST", "TRIM", "SUBSTRING", "FROM", "NATURAL", "JOIN", "FULL", "INNER", 
498 			"OUTER", "LEFT", "RIGHT", "CROSS", "USING", "WHERE", "AS", "ON", "OFF", 
499 			"IF", "ELSE", "THEN", "FOR", "TO", "AND", "OR", "IS", "NOT", "NULL", 
500 			"TRUE", "FALSE", "EXISTS", "BETWEEN", "IN", "ALL", "ANY", "LIKE", "ORDER", 
501 			"GROUP", "BY", "ASC", "DESC", "HAVING", "LIMIT", "OFFSET", "BEGIN", "COMMIT", 
502 			"ROLLBACK", "SAVEPOINT", "BOOLEAN", "DOUBLE", "CHAR", "CHARACTER", "ARRAY", 
503 			"INTERVAL", "DATE", "TIME", "TIMESTAMP", "LOCALTIME", "LOCALTIMESTAMP", 
504 			"YEAR", "QUARTER", "MONTH", "WEEK", "DAY", "HOUR", "MINUTE", "SECOND", 
505 			"MICROSECOND", "MAX", "MIN", "SUM", "COUNT", "AVG", "DEFAULT", "CURRENT", 
506 			"ENABLE", "DISABLE", "CALL", "INSTANCE", "PRESERVE", "DO", "DEFINER", 
507 			"CURRENT_USER", "SQL", "CASCADED", "LOCAL", "CLOSE", "OPEN", "NEXT", 
508 			"NAME", "COLLATION", "NAMES", "INTEGER", "REAL", "DECIMAL", "TYPE", "BIT", 
509 			"SMALLINT", "INT", "TINYINT", "NUMERIC", "FLOAT", "BIGINT", "TEXT", "VARCHAR", 
510 			"PERCENT", "TIES", "EXCEPT", "INTERSECT", "USE", "MERGE", "LOOP", "EXPAND", 
511 			"VIEWS", "FAST", "FORCE", "KEEP", "PLAN", "OPTIMIZE", "SIMPLE", "FORCED", 
512 			"HINT", "READ_ONLY", "DATABASE", "DECLARE", "CURSOR", "OF", "RETURNS", 
513 			"DATEPART", "RETURN", "READONLY", "AT", "PASSWORD", "WITHOUT", "APPLY", 
514 			"FOR_GENERATOR", "BINARY", "ESCAPE", "HIDDEN_", "MOD", "PARTITION", "PARTITIONS", 
515 			"TOP", "ROW", "ROWS", "UNKNOWN", "XOR", "ALWAYS", "CASCADE", "CHECK", 
516 			"GENERATED", "NO", "OPTION", "PRIVILEGES", "REFERENCES", "USER", "ROLE", 
517 			"START", "TRANSACTION", "ACTION", "ALGORITHM", "AUTO", "BLOCKERS", "CLUSTERED", 
518 			"NONCLUSTERED", "COLLATE", "COLUMNSTORE", "CONTENT", "CONVERT", "YEARS", 
519 			"MONTHS", "WEEKS", "DAYS", "MINUTES", "DENY", "DETERMINISTIC", "DISTRIBUTION", 
520 			"DOCUMENT", "DURABILITY", "ENCRYPTED", "END", "FILESTREAM", "FILETABLE", 
521 			"FILLFACTOR", "FOLLOWING", "HASH", "HEAP", "IDENTITY", "INBOUND", "OUTBOUND", 
522 			"UNBOUNDED", "INFINITE", "LOGIN", "MASKED", "MAXDOP", "MOVE", "NOCHECK", 
523 			"NONE", "OBJECT", "ONLINE", "OVER", "PAGE", "PAUSED", "PERIOD", "PERSISTED", 
524 			"PRECEDING", "RANDOMIZED", "RANGE", "REBUILD", "REPLICATE", "REPLICATION", 
525 			"RESUMABLE", "ROWGUIDCOL", "SAVE", "SELF", "SPARSE", "SWITCH", "TRAN", 
526 			"TRANCOUNT", "ZONE", "EXECUTE", "EXEC", "SESSION", "CONNECT", "CONNECTION", 
527 			"CATALOG", "CONTROL", "CONCAT", "TAKE", "OWNERSHIP", "DEFINITION", "APPLICATION", 
528 			"ASSEMBLY", "SYMMETRIC", "ASYMMETRIC", "SERVER", "RECEIVE", "CHANGE", 
529 			"TRACE", "TRACKING", "RESOURCES", "SETTINGS", "STATE", "AVAILABILITY", 
530 			"CREDENTIAL", "ENDPOINT", "EVENT", "NOTIFICATION", "LINKED", "AUDIT", 
531 			"DDL", "XML", "IMPERSONATE", "SECURABLES", "AUTHENTICATE", "EXTERNAL", 
532 			"ACCESS", "ADMINISTER", "BULK", "OPERATIONS", "UNSAFE", "SHUTDOWN", "SCOPED", 
533 			"CONFIGURATION", "DATASPACE", "SERVICE", "CERTIFICATE", "CONTRACT", "ENCRYPTION", 
534 			"MASTER", "DATA", "SOURCE", "FILE", "FORMAT", "LIBRARY", "FULLTEXT", 
535 			"MASK", "UNMASK", "MESSAGE", "REMOTE", "BINDING", "ROUTE", "SECURITY", 
536 			"POLICY", "AGGREGATE", "QUEUE", "RULE", "SYNONYM", "COLLECTION", "SCRIPT", 
537 			"KILL", "BACKUP", "LOG", "SHOWPLAN", "SUBSCRIBE", "QUERY", "NOTIFICATIONS", 
538 			"CHECKPOINT", "SEQUENCE", "ABORT_AFTER_WAIT", "ALLOW_PAGE_LOCKS", "ALLOW_ROW_LOCKS", 
539 			"ALL_SPARSE_COLUMNS", "BUCKET_COUNT", "COLUMNSTORE_ARCHIVE", "COLUMN_ENCRYPTION_KEY", 
540 			"COLUMN_SET", "COMPRESSION_DELAY", "DATABASE_DEAULT", "DATA_COMPRESSION", 
541 			"DATA_CONSISTENCY_CHECK", "ENCRYPTION_TYPE", "SYSTEM_TIME", "SYSTEM_VERSIONING", 
542 			"TEXTIMAGE_ON", "WAIT_AT_LOW_PRIORITY", "STATISTICS_INCREMENTAL", "STATISTICS_NORECOMPUTE", 
543 			"ROUND_ROBIN", "SCHEMA_AND_DATA", "SCHEMA_ONLY", "SORT_IN_TEMPDB", "IGNORE_DUP_KEY", 
544 			"IMPLICIT_TRANSACTIONS", "MAX_DURATION", "MEMORY_OPTIMIZED", "MIGRATION_STATE", 
545 			"PAD_INDEX", "REMOTE_DATA_ARCHIVE", "FILESTREAM_ON", "FILETABLE_COLLATE_FILENAME", 
546 			"FILETABLE_DIRECTORY", "FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME", "FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME", 
547 			"FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME", "FILTER_PREDICATE", "HISTORY_RETENTION_PERIOD", 
548 			"HISTORY_TABLE", "LOCK_ESCALATION", "DROP_EXISTING", "ROW_NUMBER", "FETCH", 
549 			"FIRST", "ONLY", "MONEY", "SMALLMONEY", "DATETIMEOFFSET", "DATETIME", 
550 			"DATETIME2", "SMALLDATETIME", "NCHAR", "NVARCHAR", "NTEXT", "VARBINARY", 
551 			"IMAGE", "SQL_VARIANT", "UNIQUEIDENTIFIER", "HIERARCHYID", "GEOMETRY", 
552 			"GEOGRAPHY", "OUTPUT", "INSERTED", "DELETED", "ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS", 
553 			"ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES", "DISABLE_BATCH_MODE_ADAPTIVE_JOINS", 
554 			"DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK", "DISABLE_DEFERRED_COMPILATION_TV", 
555 			"DISABLE_INTERLEAVED_EXECUTION_TVF", "DISABLE_OPTIMIZED_NESTED_LOOP", 
556 			"DISABLE_OPTIMIZER_ROWGOAL", "DISABLE_PARAMETER_SNIFFING", "DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK", 
557 			"DISABLE_TSQL_SCALAR_UDF_INLINING", "DISALLOW_BATCH_MODE", "ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS", 
558 			"ENABLE_QUERY_OPTIMIZER_HOTFIXES", "FORCE_DEFAULT_CARDINALITY_ESTIMATION", 
559 			"FORCE_LEGACY_CARDINALITY_ESTIMATION", "QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n", 
560 			"QUERY_PLAN_PROFILE", "EXTERNALPUSHDOWN", "SCALEOUTEXECUTION", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
561 			"KEEPFIXED", "MAX_GRANT_PERCENT", "MIN_GRANT_PERCENT", "MAXRECURSION", 
562 			"NO_PERFORMANCE_SPOOL", "PARAMETERIZATION", "QUERYTRACEON", "RECOMPILE", 
563 			"ROBUST", "OPTIMIZE_FOR_SEQUENTIAL_KEY", "DATA_DELETION", "FILTER_COLUMN", 
564 			"RETENTION_PERIOD", "CONTAINMENT", "PARTIAL", "FILENAME", "SIZE", "MAXSIZE", 
565 			"FILEGROWTH", "UNLIMITED", "KB", "MB", "GB", "TB", "CONTAINS", "MEMORY_OPTIMIZED_DATA", 
566 			"FILEGROUP", "NON_TRANSACTED_ACCESS", "DB_CHAINING", "TRUSTWORTHY", "FORWARD_ONLY", 
567 			"SCROLL", "STATIC", "KEYSET", "DYNAMIC", "FAST_FORWARD", "SCROLL_LOCKS", 
568 			"OPTIMISTIC", "TYPE_WARNING", "SCHEMABINDING", "CALLER", "INPUT", "CALLED", 
569 			"VARYING", "OUT", "OWNER", "ATOMIC", "LANGUAGE", "LEVEL", "ISOLATION", 
570 			"SNAPSHOT", "REPEATABLE", "READ", "SERIALIZABLE", "NATIVE_COMPILATION", 
571 			"VIEW_METADATA", "AFTER", "INSTEAD", "APPEND", "INCREMENT", "CYCLE", 
572 			"CACHE", "MINVALUE", "MAXVALUE", "RESTART", "LOB_COMPACTION", "COMPRESS_ALL_ROW_GROUPS", 
573 			"REORGANIZE", "RESUME", "PAUSE", "ABORT", "INCLUDE", "DISTRIBUTED", "MARK", 
574 			"WORK", "REMOVE", "AUTOGROW_SINGLE_FILE", "AUTOGROW_ALL_FILES", "READWRITE", 
575 			"READ_WRITE", "MODIFY", "ACCELERATED_DATABASE_RECOVERY", "PERSISTENT_VERSION_STORE_FILEGROUP", 
576 			"IMMEDIATE", "NO_WAIT", "TARGET_RECOVERY_TIME", "SECONDS", "HONOR_BROKER_PRIORITY", 
577 			"ERROR_BROKER_CONVERSATIONS", "NEW_BROKER", "DISABLE_BROKER", "ENABLE_BROKER", 
578 			"MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT", "READ_COMMITTED_SNAPSHOT", "ALLOW_SNAPSHOT_ISOLATION", 
579 			"RECURSIVE_TRIGGERS", "QUOTED_IDENTIFIER", "NUMERIC_ROUNDABORT", "CONCAT_NULL_YIELDS_NULL", 
580 			"COMPATIBILITY_LEVEL", "ARITHABORT", "ANSI_WARNINGS", "ANSI_PADDING", 
581 			"ANSI_NULLS", "ANSI_NULL_DEFAULT", "PAGE_VERIFY", "CHECKSUM", "TORN_PAGE_DETECTION", 
582 			"BULK_LOGGED", "RECOVERY", "TOTAL_EXECUTION_CPU_TIME_MS", "TOTAL_COMPILE_CPU_TIME_MS", 
583 			"STALE_CAPTURE_POLICY_THRESHOLD", "EXECUTION_COUNT", "QUERY_CAPTURE_POLICY", 
584 			"WAIT_STATS_CAPTURE_MODE", "MAX_PLANS_PER_QUERY", "QUERY_CAPTURE_MODE", 
585 			"SIZE_BASED_CLEANUP_MODE", "INTERVAL_LENGTH_MINUTES", "MAX_STORAGE_SIZE_MB", 
586 			"DATA_FLUSH_INTERVAL_SECONDS", "CLEANUP_POLICY", "CUSTOM", "STALE_QUERY_THRESHOLD_DAYS", 
587 			"OPERATION_MODE", "QUERY_STORE", "CURSOR_DEFAULT", "GLOBAL", "CURSOR_CLOSE_ON_COMMIT", 
588 			"HOURS", "CHANGE_RETENTION", "AUTO_CLEANUP", "CHANGE_TRACKING", "AUTOMATIC_TUNING", 
589 			"FORCE_LAST_GOOD_PLAN", "AUTO_UPDATE_STATISTICS_ASYNC", "AUTO_UPDATE_STATISTICS", 
590 			"AUTO_SHRINK", "AUTO_CREATE_STATISTICS", "INCREMENTAL", "AUTO_CLOSE", 
591 			"DATA_RETENTION", "TEMPORAL_HISTORY_RETENTION", "EDITION", "MIXED_PAGE_ALLOCATION", 
592 			"DISABLED", "ALLOWED", "HADR", "MULTI_USER", "RESTRICTED_USER", "SINGLE_USER", 
593 			"OFFLINE", "EMERGENCY", "SUSPEND", "DATE_CORRELATION_OPTIMIZATION", "ELASTIC_POOL", 
594 			"SERVICE_OBJECTIVE", "DATABASE_NAME", "ALLOW_CONNECTIONS", "GEO", "NAMED", 
595 			"DATEFIRST", "BACKUP_STORAGE_REDUNDANCY", "FORCE_FAILOVER_ALLOW_DATA_LOSS", 
596 			"SECONDARY", "FAILOVER", "DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", 
597 			"INLINE", "NESTED_TRIGGERS", "TRANSFORM_NOISE_WORDS", "TWO_DIGIT_YEAR_CUTOFF", 
598 			"PERSISTENT_LOG_BUFFER", "DIRECTORY_NAME", "DATEFORMAT", "DELAYED_DURABILITY", 
599 			"AUTHORIZATION", "TRANSFER", "EXPLAIN", "WITH_RECOMMENDATIONS", "BATCH_SIZE", 
600 			"SETUSER", "NORESET", "DEFAULT_SCHEMA", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", 
601 			"OLD_PASSWORD", "PROVIDER", "SID", "UNCOMMITTED", "COMMITTED", "STOPLIST", 
602 			"SEARCH", "PROPERTY", "LIST", "SEND", "MEMBER", "HASHED", "MUST_CHANGE", 
603 			"DEFAULT_DATABASE", "CHECK_EXPIRATION", "CHECK_POLICY", "WINDOWS", "UNLOCK", 
604 			"REVERT", "COOKIE", "BROWSE", "RAW", "XMLDATA", "XMLSCHEMA", "ELEMENTS", 
605 			"XSINIL", "ABSENT", "EXPLICIT", "PATH", "BASE64", "ROOT", "JSON", "INCLUDE_NULL_VALUES", 
606 			"WITHOUT_ARRAY_WRAPPER", "XMLNAMESPACES", "STATISTICS", "FULLSCAN", "SAMPLE", 
607 			"RESAMPLE", "NORECOMPUTE", "AUTO_DROP", "PERSIST_SAMPLE_PERCENT", "IDENTIFIER_", 
608 			"DELIMITED_IDENTIFIER_", "STRING_", "NUMBER_", "INT_NUM_", "FLOAT_NUM_", 
609 			"DECIMAL_NUM_", "HEX_DIGIT_", "BIT_NUM_", "NCHAR_TEXT"
610 		};
611 	}
612 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
613 	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
614 
615 	/**
616 	 * @deprecated Use {@link #VOCABULARY} instead.
617 	 */
618 	@Deprecated
619 	public static final String[] tokenNames;
620 	static {
621 		tokenNames = new String[_SYMBOLIC_NAMES.length];
622 		for (int i = 0; i < tokenNames.length; i++) {
623 			tokenNames[i] = VOCABULARY.getLiteralName(i);
624 			if (tokenNames[i] == null) {
625 				tokenNames[i] = VOCABULARY.getSymbolicName(i);
626 			}
627 
628 			if (tokenNames[i] == null) {
629 				tokenNames[i] = "<INVALID>";
630 			}
631 		}
632 	}
633 
634 	@Override
635 	@Deprecated
636 	public String[] getTokenNames() {
637 		return tokenNames;
638 	}
639 
640 	@Override
641 
642 	public Vocabulary getVocabulary() {
643 		return VOCABULARY;
644 	}
645 
646 	@Override
647 	public String getGrammarFileName() { return "SQLServerStatement.g4"; }
648 
649 	@Override
650 	public String[] getRuleNames() { return ruleNames; }
651 
652 	@Override
653 	public String getSerializedATN() { return _serializedATN; }
654 
655 	@Override
656 	public ATN getATN() { return _ATN; }
657 
658 	public SQLServerStatementParser(TokenStream input) {
659 		super(input);
660 		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
661 	}
662 
663 	public static class ExecuteContext extends ParserRuleContext {
664 		public SelectContext select() {
665 			return getRuleContext(SelectContext.class,0);
666 		}
667 		public InsertContext insert() {
668 			return getRuleContext(InsertContext.class,0);
669 		}
670 		public UpdateContext update() {
671 			return getRuleContext(UpdateContext.class,0);
672 		}
673 		public DeleteContext delete() {
674 			return getRuleContext(DeleteContext.class,0);
675 		}
676 		public CreateIndexContext createIndex() {
677 			return getRuleContext(CreateIndexContext.class,0);
678 		}
679 		public AlterIndexContext alterIndex() {
680 			return getRuleContext(AlterIndexContext.class,0);
681 		}
682 		public DropIndexContext dropIndex() {
683 			return getRuleContext(DropIndexContext.class,0);
684 		}
685 		public CreateTableContext createTable() {
686 			return getRuleContext(CreateTableContext.class,0);
687 		}
688 		public CreateDatabaseContext createDatabase() {
689 			return getRuleContext(CreateDatabaseContext.class,0);
690 		}
691 		public CreateProcedureContext createProcedure() {
692 			return getRuleContext(CreateProcedureContext.class,0);
693 		}
694 		public CreateViewContext createView() {
695 			return getRuleContext(CreateViewContext.class,0);
696 		}
697 		public CreateTriggerContext createTrigger() {
698 			return getRuleContext(CreateTriggerContext.class,0);
699 		}
700 		public CreateSequenceContext createSequence() {
701 			return getRuleContext(CreateSequenceContext.class,0);
702 		}
703 		public CreateServiceContext createService() {
704 			return getRuleContext(CreateServiceContext.class,0);
705 		}
706 		public CreateSchemaContext createSchema() {
707 			return getRuleContext(CreateSchemaContext.class,0);
708 		}
709 		public AlterTableContext alterTable() {
710 			return getRuleContext(AlterTableContext.class,0);
711 		}
712 		public AlterTriggerContext alterTrigger() {
713 			return getRuleContext(AlterTriggerContext.class,0);
714 		}
715 		public AlterSequenceContext alterSequence() {
716 			return getRuleContext(AlterSequenceContext.class,0);
717 		}
718 		public AlterDatabaseContext alterDatabase() {
719 			return getRuleContext(AlterDatabaseContext.class,0);
720 		}
721 		public AlterServiceContext alterService() {
722 			return getRuleContext(AlterServiceContext.class,0);
723 		}
724 		public AlterSchemaContext alterSchema() {
725 			return getRuleContext(AlterSchemaContext.class,0);
726 		}
727 		public AlterViewContext alterView() {
728 			return getRuleContext(AlterViewContext.class,0);
729 		}
730 		public DropTableContext dropTable() {
731 			return getRuleContext(DropTableContext.class,0);
732 		}
733 		public DropDatabaseContext dropDatabase() {
734 			return getRuleContext(DropDatabaseContext.class,0);
735 		}
736 		public DropFunctionContext dropFunction() {
737 			return getRuleContext(DropFunctionContext.class,0);
738 		}
739 		public DropProcedureContext dropProcedure() {
740 			return getRuleContext(DropProcedureContext.class,0);
741 		}
742 		public DropViewContext dropView() {
743 			return getRuleContext(DropViewContext.class,0);
744 		}
745 		public DropTriggerContext dropTrigger() {
746 			return getRuleContext(DropTriggerContext.class,0);
747 		}
748 		public DropSequenceContext dropSequence() {
749 			return getRuleContext(DropSequenceContext.class,0);
750 		}
751 		public DropServiceContext dropService() {
752 			return getRuleContext(DropServiceContext.class,0);
753 		}
754 		public DropSchemaContext dropSchema() {
755 			return getRuleContext(DropSchemaContext.class,0);
756 		}
757 		public TruncateTableContext truncateTable() {
758 			return getRuleContext(TruncateTableContext.class,0);
759 		}
760 		public CreateFunctionContext createFunction() {
761 			return getRuleContext(CreateFunctionContext.class,0);
762 		}
763 		public SetTransactionContext setTransaction() {
764 			return getRuleContext(SetTransactionContext.class,0);
765 		}
766 		public BeginTransactionContext beginTransaction() {
767 			return getRuleContext(BeginTransactionContext.class,0);
768 		}
769 		public BeginDistributedTransactionContext beginDistributedTransaction() {
770 			return getRuleContext(BeginDistributedTransactionContext.class,0);
771 		}
772 		public SetImplicitTransactionsContext setImplicitTransactions() {
773 			return getRuleContext(SetImplicitTransactionsContext.class,0);
774 		}
775 		public CommitContext commit() {
776 			return getRuleContext(CommitContext.class,0);
777 		}
778 		public CommitWorkContext commitWork() {
779 			return getRuleContext(CommitWorkContext.class,0);
780 		}
781 		public RollbackContext rollback() {
782 			return getRuleContext(RollbackContext.class,0);
783 		}
784 		public RollbackWorkContext rollbackWork() {
785 			return getRuleContext(RollbackWorkContext.class,0);
786 		}
787 		public SavepointContext savepoint() {
788 			return getRuleContext(SavepointContext.class,0);
789 		}
790 		public GrantContext grant() {
791 			return getRuleContext(GrantContext.class,0);
792 		}
793 		public RevokeContext revoke() {
794 			return getRuleContext(RevokeContext.class,0);
795 		}
796 		public DenyContext deny() {
797 			return getRuleContext(DenyContext.class,0);
798 		}
799 		public CreateUserContext createUser() {
800 			return getRuleContext(CreateUserContext.class,0);
801 		}
802 		public DropUserContext dropUser() {
803 			return getRuleContext(DropUserContext.class,0);
804 		}
805 		public AlterUserContext alterUser() {
806 			return getRuleContext(AlterUserContext.class,0);
807 		}
808 		public CreateRoleContext createRole() {
809 			return getRuleContext(CreateRoleContext.class,0);
810 		}
811 		public DropRoleContext dropRole() {
812 			return getRuleContext(DropRoleContext.class,0);
813 		}
814 		public AlterRoleContext alterRole() {
815 			return getRuleContext(AlterRoleContext.class,0);
816 		}
817 		public CreateLoginContext createLogin() {
818 			return getRuleContext(CreateLoginContext.class,0);
819 		}
820 		public DropLoginContext dropLogin() {
821 			return getRuleContext(DropLoginContext.class,0);
822 		}
823 		public AlterLoginContext alterLogin() {
824 			return getRuleContext(AlterLoginContext.class,0);
825 		}
826 		public CallContext call() {
827 			return getRuleContext(CallContext.class,0);
828 		}
829 		public ExplainContext explain() {
830 			return getRuleContext(ExplainContext.class,0);
831 		}
832 		public SetUserContext setUser() {
833 			return getRuleContext(SetUserContext.class,0);
834 		}
835 		public RevertContext revert() {
836 			return getRuleContext(RevertContext.class,0);
837 		}
838 		public UpdateStatisticsContext updateStatistics() {
839 			return getRuleContext(UpdateStatisticsContext.class,0);
840 		}
841 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
842 		public ExecuteContext(ParserRuleContext parent, int invokingState) {
843 			super(parent, invokingState);
844 		}
845 		@Override public int getRuleIndex() { return RULE_execute; }
846 		@Override
847 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
848 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecute(this);
849 			else return visitor.visitChildren(this);
850 		}
851 	}
852 
853 	public final ExecuteContext execute() throws RecognitionException {
854 		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
855 		enterRule(_localctx, 0, RULE_execute);
856 		int _la;
857 		try {
858 			enterOuterAlt(_localctx, 1);
859 			{
860 			setState(1029);
861 			_errHandler.sync(this);
862 			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
863 			case 1:
864 				{
865 				setState(970);
866 				select();
867 				}
868 				break;
869 			case 2:
870 				{
871 				setState(971);
872 				insert();
873 				}
874 				break;
875 			case 3:
876 				{
877 				setState(972);
878 				update();
879 				}
880 				break;
881 			case 4:
882 				{
883 				setState(973);
884 				delete();
885 				}
886 				break;
887 			case 5:
888 				{
889 				setState(974);
890 				createIndex();
891 				}
892 				break;
893 			case 6:
894 				{
895 				setState(975);
896 				alterIndex();
897 				}
898 				break;
899 			case 7:
900 				{
901 				setState(976);
902 				dropIndex();
903 				}
904 				break;
905 			case 8:
906 				{
907 				setState(977);
908 				createTable();
909 				}
910 				break;
911 			case 9:
912 				{
913 				setState(978);
914 				createDatabase();
915 				}
916 				break;
917 			case 10:
918 				{
919 				setState(979);
920 				createProcedure();
921 				}
922 				break;
923 			case 11:
924 				{
925 				setState(980);
926 				createView();
927 				}
928 				break;
929 			case 12:
930 				{
931 				setState(981);
932 				createTrigger();
933 				}
934 				break;
935 			case 13:
936 				{
937 				setState(982);
938 				createSequence();
939 				}
940 				break;
941 			case 14:
942 				{
943 				setState(983);
944 				createService();
945 				}
946 				break;
947 			case 15:
948 				{
949 				setState(984);
950 				createSchema();
951 				}
952 				break;
953 			case 16:
954 				{
955 				setState(985);
956 				alterTable();
957 				}
958 				break;
959 			case 17:
960 				{
961 				setState(986);
962 				alterTrigger();
963 				}
964 				break;
965 			case 18:
966 				{
967 				setState(987);
968 				alterSequence();
969 				}
970 				break;
971 			case 19:
972 				{
973 				setState(988);
974 				alterDatabase();
975 				}
976 				break;
977 			case 20:
978 				{
979 				setState(989);
980 				alterService();
981 				}
982 				break;
983 			case 21:
984 				{
985 				setState(990);
986 				alterSchema();
987 				}
988 				break;
989 			case 22:
990 				{
991 				setState(991);
992 				alterView();
993 				}
994 				break;
995 			case 23:
996 				{
997 				setState(992);
998 				dropTable();
999 				}
1000 				break;
1001 			case 24:
1002 				{
1003 				setState(993);
1004 				dropDatabase();
1005 				}
1006 				break;
1007 			case 25:
1008 				{
1009 				setState(994);
1010 				dropFunction();
1011 				}
1012 				break;
1013 			case 26:
1014 				{
1015 				setState(995);
1016 				dropProcedure();
1017 				}
1018 				break;
1019 			case 27:
1020 				{
1021 				setState(996);
1022 				dropView();
1023 				}
1024 				break;
1025 			case 28:
1026 				{
1027 				setState(997);
1028 				dropTrigger();
1029 				}
1030 				break;
1031 			case 29:
1032 				{
1033 				setState(998);
1034 				dropSequence();
1035 				}
1036 				break;
1037 			case 30:
1038 				{
1039 				setState(999);
1040 				dropService();
1041 				}
1042 				break;
1043 			case 31:
1044 				{
1045 				setState(1000);
1046 				dropSchema();
1047 				}
1048 				break;
1049 			case 32:
1050 				{
1051 				setState(1001);
1052 				truncateTable();
1053 				}
1054 				break;
1055 			case 33:
1056 				{
1057 				setState(1002);
1058 				createFunction();
1059 				}
1060 				break;
1061 			case 34:
1062 				{
1063 				setState(1003);
1064 				setTransaction();
1065 				}
1066 				break;
1067 			case 35:
1068 				{
1069 				setState(1004);
1070 				beginTransaction();
1071 				}
1072 				break;
1073 			case 36:
1074 				{
1075 				setState(1005);
1076 				beginDistributedTransaction();
1077 				}
1078 				break;
1079 			case 37:
1080 				{
1081 				setState(1006);
1082 				setImplicitTransactions();
1083 				}
1084 				break;
1085 			case 38:
1086 				{
1087 				setState(1007);
1088 				commit();
1089 				}
1090 				break;
1091 			case 39:
1092 				{
1093 				setState(1008);
1094 				commitWork();
1095 				}
1096 				break;
1097 			case 40:
1098 				{
1099 				setState(1009);
1100 				rollback();
1101 				}
1102 				break;
1103 			case 41:
1104 				{
1105 				setState(1010);
1106 				rollbackWork();
1107 				}
1108 				break;
1109 			case 42:
1110 				{
1111 				setState(1011);
1112 				savepoint();
1113 				}
1114 				break;
1115 			case 43:
1116 				{
1117 				setState(1012);
1118 				grant();
1119 				}
1120 				break;
1121 			case 44:
1122 				{
1123 				setState(1013);
1124 				revoke();
1125 				}
1126 				break;
1127 			case 45:
1128 				{
1129 				setState(1014);
1130 				deny();
1131 				}
1132 				break;
1133 			case 46:
1134 				{
1135 				setState(1015);
1136 				createUser();
1137 				}
1138 				break;
1139 			case 47:
1140 				{
1141 				setState(1016);
1142 				dropUser();
1143 				}
1144 				break;
1145 			case 48:
1146 				{
1147 				setState(1017);
1148 				alterUser();
1149 				}
1150 				break;
1151 			case 49:
1152 				{
1153 				setState(1018);
1154 				createRole();
1155 				}
1156 				break;
1157 			case 50:
1158 				{
1159 				setState(1019);
1160 				dropRole();
1161 				}
1162 				break;
1163 			case 51:
1164 				{
1165 				setState(1020);
1166 				alterRole();
1167 				}
1168 				break;
1169 			case 52:
1170 				{
1171 				setState(1021);
1172 				createLogin();
1173 				}
1174 				break;
1175 			case 53:
1176 				{
1177 				setState(1022);
1178 				dropLogin();
1179 				}
1180 				break;
1181 			case 54:
1182 				{
1183 				setState(1023);
1184 				alterLogin();
1185 				}
1186 				break;
1187 			case 55:
1188 				{
1189 				setState(1024);
1190 				call();
1191 				}
1192 				break;
1193 			case 56:
1194 				{
1195 				setState(1025);
1196 				explain();
1197 				}
1198 				break;
1199 			case 57:
1200 				{
1201 				setState(1026);
1202 				setUser();
1203 				}
1204 				break;
1205 			case 58:
1206 				{
1207 				setState(1027);
1208 				revert();
1209 				}
1210 				break;
1211 			case 59:
1212 				{
1213 				setState(1028);
1214 				updateStatistics();
1215 				}
1216 				break;
1217 			}
1218 			setState(1032);
1219 			_errHandler.sync(this);
1220 			_la = _input.LA(1);
1221 			if (_la==SEMI_) {
1222 				{
1223 				setState(1031);
1224 				match(SEMI_);
1225 				}
1226 			}
1227 
1228 			}
1229 		}
1230 		catch (RecognitionException re) {
1231 			_localctx.exception = re;
1232 			_errHandler.reportError(this, re);
1233 			_errHandler.recover(this, re);
1234 		}
1235 		finally {
1236 			exitRule();
1237 		}
1238 		return _localctx;
1239 	}
1240 
1241 	public static class SetTransactionContext extends ParserRuleContext {
1242 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1243 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1244 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
1245 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
1246 		public IsolationLevelContext isolationLevel() {
1247 			return getRuleContext(IsolationLevelContext.class,0);
1248 		}
1249 		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
1250 			super(parent, invokingState);
1251 		}
1252 		@Override public int getRuleIndex() { return RULE_setTransaction; }
1253 		@Override
1254 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1255 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetTransaction(this);
1256 			else return visitor.visitChildren(this);
1257 		}
1258 	}
1259 
1260 	public final SetTransactionContext setTransaction() throws RecognitionException {
1261 		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
1262 		enterRule(_localctx, 2, RULE_setTransaction);
1263 		try {
1264 			enterOuterAlt(_localctx, 1);
1265 			{
1266 			setState(1034);
1267 			match(SET);
1268 			setState(1035);
1269 			match(TRANSACTION);
1270 			setState(1036);
1271 			match(ISOLATION);
1272 			setState(1037);
1273 			match(LEVEL);
1274 			setState(1038);
1275 			isolationLevel();
1276 			}
1277 		}
1278 		catch (RecognitionException re) {
1279 			_localctx.exception = re;
1280 			_errHandler.reportError(this, re);
1281 			_errHandler.recover(this, re);
1282 		}
1283 		finally {
1284 			exitRule();
1285 		}
1286 		return _localctx;
1287 	}
1288 
1289 	public static class IsolationLevelContext extends ParserRuleContext {
1290 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
1291 		public TerminalNode UNCOMMITTED() { return getToken(SQLServerStatementParser.UNCOMMITTED, 0); }
1292 		public TerminalNode COMMITTED() { return getToken(SQLServerStatementParser.COMMITTED, 0); }
1293 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
1294 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
1295 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
1296 		public IsolationLevelContext(ParserRuleContext parent, int invokingState) {
1297 			super(parent, invokingState);
1298 		}
1299 		@Override public int getRuleIndex() { return RULE_isolationLevel; }
1300 		@Override
1301 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1302 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIsolationLevel(this);
1303 			else return visitor.visitChildren(this);
1304 		}
1305 	}
1306 
1307 	public final IsolationLevelContext isolationLevel() throws RecognitionException {
1308 		IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState());
1309 		enterRule(_localctx, 4, RULE_isolationLevel);
1310 		try {
1311 			setState(1048);
1312 			_errHandler.sync(this);
1313 			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
1314 			case 1:
1315 				enterOuterAlt(_localctx, 1);
1316 				{
1317 				setState(1040);
1318 				match(READ);
1319 				setState(1041);
1320 				match(UNCOMMITTED);
1321 				}
1322 				break;
1323 			case 2:
1324 				enterOuterAlt(_localctx, 2);
1325 				{
1326 				setState(1042);
1327 				match(READ);
1328 				setState(1043);
1329 				match(COMMITTED);
1330 				}
1331 				break;
1332 			case 3:
1333 				enterOuterAlt(_localctx, 3);
1334 				{
1335 				setState(1044);
1336 				match(REPEATABLE);
1337 				setState(1045);
1338 				match(READ);
1339 				}
1340 				break;
1341 			case 4:
1342 				enterOuterAlt(_localctx, 4);
1343 				{
1344 				setState(1046);
1345 				match(SNAPSHOT);
1346 				}
1347 				break;
1348 			case 5:
1349 				enterOuterAlt(_localctx, 5);
1350 				{
1351 				setState(1047);
1352 				match(SERIALIZABLE);
1353 				}
1354 				break;
1355 			}
1356 		}
1357 		catch (RecognitionException re) {
1358 			_localctx.exception = re;
1359 			_errHandler.reportError(this, re);
1360 			_errHandler.recover(this, re);
1361 		}
1362 		finally {
1363 			exitRule();
1364 		}
1365 		return _localctx;
1366 	}
1367 
1368 	public static class SetImplicitTransactionsContext extends ParserRuleContext {
1369 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1370 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
1371 		public ImplicitTransactionsValueContext implicitTransactionsValue() {
1372 			return getRuleContext(ImplicitTransactionsValueContext.class,0);
1373 		}
1374 		public SetImplicitTransactionsContext(ParserRuleContext parent, int invokingState) {
1375 			super(parent, invokingState);
1376 		}
1377 		@Override public int getRuleIndex() { return RULE_setImplicitTransactions; }
1378 		@Override
1379 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1380 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetImplicitTransactions(this);
1381 			else return visitor.visitChildren(this);
1382 		}
1383 	}
1384 
1385 	public final SetImplicitTransactionsContext setImplicitTransactions() throws RecognitionException {
1386 		SetImplicitTransactionsContext _localctx = new SetImplicitTransactionsContext(_ctx, getState());
1387 		enterRule(_localctx, 6, RULE_setImplicitTransactions);
1388 		try {
1389 			enterOuterAlt(_localctx, 1);
1390 			{
1391 			setState(1050);
1392 			match(SET);
1393 			setState(1051);
1394 			match(IMPLICIT_TRANSACTIONS);
1395 			setState(1052);
1396 			implicitTransactionsValue();
1397 			}
1398 		}
1399 		catch (RecognitionException re) {
1400 			_localctx.exception = re;
1401 			_errHandler.reportError(this, re);
1402 			_errHandler.recover(this, re);
1403 		}
1404 		finally {
1405 			exitRule();
1406 		}
1407 		return _localctx;
1408 	}
1409 
1410 	public static class ImplicitTransactionsValueContext extends ParserRuleContext {
1411 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1412 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1413 		public ImplicitTransactionsValueContext(ParserRuleContext parent, int invokingState) {
1414 			super(parent, invokingState);
1415 		}
1416 		@Override public int getRuleIndex() { return RULE_implicitTransactionsValue; }
1417 		@Override
1418 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1419 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitImplicitTransactionsValue(this);
1420 			else return visitor.visitChildren(this);
1421 		}
1422 	}
1423 
1424 	public final ImplicitTransactionsValueContext implicitTransactionsValue() throws RecognitionException {
1425 		ImplicitTransactionsValueContext _localctx = new ImplicitTransactionsValueContext(_ctx, getState());
1426 		enterRule(_localctx, 8, RULE_implicitTransactionsValue);
1427 		int _la;
1428 		try {
1429 			enterOuterAlt(_localctx, 1);
1430 			{
1431 			setState(1054);
1432 			_la = _input.LA(1);
1433 			if ( !(_la==ON || _la==OFF) ) {
1434 			_errHandler.recoverInline(this);
1435 			}
1436 			else {
1437 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1438 				_errHandler.reportMatch(this);
1439 				consume();
1440 			}
1441 			}
1442 		}
1443 		catch (RecognitionException re) {
1444 			_localctx.exception = re;
1445 			_errHandler.reportError(this, re);
1446 			_errHandler.recover(this, re);
1447 		}
1448 		finally {
1449 			exitRule();
1450 		}
1451 		return _localctx;
1452 	}
1453 
1454 	public static class BeginTransactionContext extends ParserRuleContext {
1455 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1456 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1457 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1458 		public TransactionNameContext transactionName() {
1459 			return getRuleContext(TransactionNameContext.class,0);
1460 		}
1461 		public TransactionVariableNameContext transactionVariableName() {
1462 			return getRuleContext(TransactionVariableNameContext.class,0);
1463 		}
1464 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1465 		public TerminalNode MARK() { return getToken(SQLServerStatementParser.MARK, 0); }
1466 		public StringLiteralsContext stringLiterals() {
1467 			return getRuleContext(StringLiteralsContext.class,0);
1468 		}
1469 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
1470 		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
1471 			super(parent, invokingState);
1472 		}
1473 		@Override public int getRuleIndex() { return RULE_beginTransaction; }
1474 		@Override
1475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginTransaction(this);
1477 			else return visitor.visitChildren(this);
1478 		}
1479 	}
1480 
1481 	public final BeginTransactionContext beginTransaction() throws RecognitionException {
1482 		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
1483 		enterRule(_localctx, 10, RULE_beginTransaction);
1484 		int _la;
1485 		try {
1486 			enterOuterAlt(_localctx, 1);
1487 			{
1488 			setState(1056);
1489 			match(BEGIN);
1490 			setState(1057);
1491 			_la = _input.LA(1);
1492 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1493 			_errHandler.recoverInline(this);
1494 			}
1495 			else {
1496 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1497 				_errHandler.reportMatch(this);
1498 				consume();
1499 			}
1500 			setState(1070);
1501 			_errHandler.sync(this);
1502 			_la = _input.LA(1);
1503 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)) | (1L << (ROLE - 184)) | (1L << (START - 184)) | (1L << (ALGORITHM - 184)) | (1L << (AUTO - 184)) | (1L << (BLOCKERS - 184)) | (1L << (CLUSTERED - 184)) | (1L << (NONCLUSTERED - 184)) | (1L << (COLUMNSTORE - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)) | (1L << (RANGE - 248)) | (1L << (REBUILD - 248)) | (1L << (REPLICATE - 248)) | (1L << (REPLICATION - 248)) | (1L << (RESUMABLE - 248)) | (1L << (ROWGUIDCOL - 248)) | (1L << (SAVE - 248)) | (1L << (SELF - 248)) | (1L << (SPARSE - 248)) | (1L << (SWITCH - 248)) | (1L << (TRAN - 248)) | (1L << (TRANCOUNT - 248)) | (1L << (CONTROL - 248)) | (1L << (CONCAT - 248)) | (1L << (TAKE - 248)) | (1L << (OWNERSHIP - 248)) | (1L << (DEFINITION - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)) | (1L << (SOURCE - 312)) | (1L << (FILE - 312)) | (1L << (FORMAT - 312)) | (1L << (LIBRARY - 312)) | (1L << (FULLTEXT - 312)) | (1L << (MASK - 312)) | (1L << (UNMASK - 312)) | (1L << (MESSAGE - 312)) | (1L << (REMOTE - 312)) | (1L << (BINDING - 312)) | (1L << (ROUTE - 312)) | (1L << (SECURITY - 312)) | (1L << (POLICY - 312)) | (1L << (AGGREGATE - 312)) | (1L << (QUEUE - 312)) | (1L << (RULE - 312)) | (1L << (SYNONYM - 312)) | (1L << (COLLECTION - 312)) | (1L << (SCRIPT - 312)) | (1L << (KILL - 312)) | (1L << (BACKUP - 312)) | (1L << (LOG - 312)) | (1L << (SHOWPLAN - 312)) | (1L << (SUBSCRIBE - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILTER_PREDICATE - 376)) | (1L << (HISTORY_RETENTION_PERIOD - 376)) | (1L << (HISTORY_TABLE - 376)) | (1L << (LOCK_ESCALATION - 376)) | (1L << (DROP_EXISTING - 376)) | (1L << (ROW_NUMBER - 376)) | (1L << (FIRST - 376)) | (1L << (DATETIME2 - 376)))) != 0) || ((((_la - 441)) & ~0x3f) == 0 && ((1L << (_la - 441)) & ((1L << (OUTPUT - 441)) | (1L << (INSERTED - 441)) | (1L << (DELETED - 441)) | (1L << (FILENAME - 441)) | (1L << (MAXSIZE - 441)) | (1L << (FILEGROWTH - 441)) | (1L << (UNLIMITED - 441)) | (1L << (KB - 441)) | (1L << (MB - 441)) | (1L << (GB - 441)) | (1L << (TB - 441)) | (1L << (MEMORY_OPTIMIZED_DATA - 441)) | (1L << (FILEGROUP - 441)) | (1L << (NON_TRANSACTED_ACCESS - 441)) | (1L << (DB_CHAINING - 441)) | (1L << (TRUSTWORTHY - 441)) | (1L << (FORWARD_ONLY - 441)) | (1L << (KEYSET - 441)) | (1L << (FAST_FORWARD - 441)) | (1L << (SCROLL_LOCKS - 441)) | (1L << (OPTIMISTIC - 441)) | (1L << (TYPE_WARNING - 441)) | (1L << (SCHEMABINDING - 441)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (CALLER - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 505)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 505)) | (1L << (IMMEDIATE - 505)) | (1L << (NO_WAIT - 505)) | (1L << (TARGET_RECOVERY_TIME - 505)) | (1L << (SECONDS - 505)) | (1L << (HONOR_BROKER_PRIORITY - 505)) | (1L << (ERROR_BROKER_CONVERSATIONS - 505)) | (1L << (NEW_BROKER - 505)) | (1L << (DISABLE_BROKER - 505)) | (1L << (ENABLE_BROKER - 505)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 505)) | (1L << (READ_COMMITTED_SNAPSHOT - 505)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 505)) | (1L << (RECURSIVE_TRIGGERS - 505)) | (1L << (QUOTED_IDENTIFIER - 505)) | (1L << (NUMERIC_ROUNDABORT - 505)) | (1L << (CONCAT_NULL_YIELDS_NULL - 505)) | (1L << (COMPATIBILITY_LEVEL - 505)) | (1L << (ARITHABORT - 505)) | (1L << (ANSI_WARNINGS - 505)) | (1L << (ANSI_PADDING - 505)) | (1L << (ANSI_NULLS - 505)))) != 0) || ((((_la - 569)) & ~0x3f) == 0 && ((1L << (_la - 569)) & ((1L << (ANSI_NULL_DEFAULT - 569)) | (1L << (PAGE_VERIFY - 569)) | (1L << (CHECKSUM - 569)) | (1L << (TORN_PAGE_DETECTION - 569)) | (1L << (BULK_LOGGED - 569)) | (1L << (RECOVERY - 569)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 569)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 569)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 569)) | (1L << (EXECUTION_COUNT - 569)) | (1L << (QUERY_CAPTURE_POLICY - 569)) | (1L << (WAIT_STATS_CAPTURE_MODE - 569)) | (1L << (MAX_PLANS_PER_QUERY - 569)) | (1L << (QUERY_CAPTURE_MODE - 569)) | (1L << (SIZE_BASED_CLEANUP_MODE - 569)) | (1L << (INTERVAL_LENGTH_MINUTES - 569)) | (1L << (MAX_STORAGE_SIZE_MB - 569)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 569)) | (1L << (CLEANUP_POLICY - 569)) | (1L << (CUSTOM - 569)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 569)) | (1L << (OPERATION_MODE - 569)) | (1L << (QUERY_STORE - 569)) | (1L << (CURSOR_DEFAULT - 569)) | (1L << (GLOBAL - 569)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 569)) | (1L << (HOURS - 569)) | (1L << (CHANGE_RETENTION - 569)) | (1L << (AUTO_CLEANUP - 569)) | (1L << (CHANGE_TRACKING - 569)) | (1L << (AUTOMATIC_TUNING - 569)) | (1L << (FORCE_LAST_GOOD_PLAN - 569)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 569)) | (1L << (AUTO_UPDATE_STATISTICS - 569)) | (1L << (AUTO_SHRINK - 569)) | (1L << (AUTO_CREATE_STATISTICS - 569)) | (1L << (INCREMENTAL - 569)) | (1L << (AUTO_CLOSE - 569)) | (1L << (DATA_RETENTION - 569)) | (1L << (TEMPORAL_HISTORY_RETENTION - 569)) | (1L << (EDITION - 569)) | (1L << (MIXED_PAGE_ALLOCATION - 569)) | (1L << (DISABLED - 569)) | (1L << (ALLOWED - 569)) | (1L << (HADR - 569)) | (1L << (MULTI_USER - 569)) | (1L << (RESTRICTED_USER - 569)) | (1L << (SINGLE_USER - 569)) | (1L << (OFFLINE - 569)) | (1L << (EMERGENCY - 569)) | (1L << (SUSPEND - 569)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 569)) | (1L << (ELASTIC_POOL - 569)) | (1L << (SERVICE_OBJECTIVE - 569)) | (1L << (DATABASE_NAME - 569)) | (1L << (ALLOW_CONNECTIONS - 569)) | (1L << (GEO - 569)) | (1L << (NAMED - 569)) | (1L << (DATEFIRST - 569)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 569)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 569)) | (1L << (SECONDARY - 569)) | (1L << (FAILOVER - 569)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 569)))) != 0) || ((((_la - 633)) & ~0x3f) == 0 && ((1L << (_la - 633)) & ((1L << (DEFAULT_LANGUAGE - 633)) | (1L << (INLINE - 633)) | (1L << (NESTED_TRIGGERS - 633)) | (1L << (TRANSFORM_NOISE_WORDS - 633)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 633)) | (1L << (PERSISTENT_LOG_BUFFER - 633)) | (1L << (DIRECTORY_NAME - 633)) | (1L << (DATEFORMAT - 633)) | (1L << (DELAYED_DURABILITY - 633)) | (1L << (AUTHORIZATION - 633)) | (1L << (TRANSFER - 633)) | (1L << (PROVIDER - 633)) | (1L << (SEARCH - 633)) | (1L << (MEMBER - 633)) | (1L << (IDENTIFIER_ - 633)) | (1L << (DELIMITED_IDENTIFIER_ - 633)))) != 0)) {
1504 				{
1505 				setState(1060);
1506 				_errHandler.sync(this);
1507 				switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
1508 				case 1:
1509 					{
1510 					setState(1058);
1511 					transactionName();
1512 					}
1513 					break;
1514 				case 2:
1515 					{
1516 					setState(1059);
1517 					transactionVariableName();
1518 					}
1519 					break;
1520 				}
1521 				setState(1068);
1522 				_errHandler.sync(this);
1523 				_la = _input.LA(1);
1524 				if (_la==WITH) {
1525 					{
1526 					setState(1062);
1527 					match(WITH);
1528 					setState(1063);
1529 					match(MARK);
1530 					setState(1066);
1531 					_errHandler.sync(this);
1532 					switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
1533 					case 1:
1534 						{
1535 						setState(1064);
1536 						stringLiterals();
1537 						}
1538 						break;
1539 					case 2:
1540 						{
1541 						setState(1065);
1542 						match(NCHAR_TEXT);
1543 						}
1544 						break;
1545 					}
1546 					}
1547 				}
1548 
1549 				}
1550 			}
1551 
1552 			}
1553 		}
1554 		catch (RecognitionException re) {
1555 			_localctx.exception = re;
1556 			_errHandler.reportError(this, re);
1557 			_errHandler.recover(this, re);
1558 		}
1559 		finally {
1560 			exitRule();
1561 		}
1562 		return _localctx;
1563 	}
1564 
1565 	public static class BeginDistributedTransactionContext extends ParserRuleContext {
1566 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1567 		public TerminalNode DISTRIBUTED() { return getToken(SQLServerStatementParser.DISTRIBUTED, 0); }
1568 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1569 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1570 		public TransactionNameContext transactionName() {
1571 			return getRuleContext(TransactionNameContext.class,0);
1572 		}
1573 		public TransactionVariableNameContext transactionVariableName() {
1574 			return getRuleContext(TransactionVariableNameContext.class,0);
1575 		}
1576 		public BeginDistributedTransactionContext(ParserRuleContext parent, int invokingState) {
1577 			super(parent, invokingState);
1578 		}
1579 		@Override public int getRuleIndex() { return RULE_beginDistributedTransaction; }
1580 		@Override
1581 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1582 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginDistributedTransaction(this);
1583 			else return visitor.visitChildren(this);
1584 		}
1585 	}
1586 
1587 	public final BeginDistributedTransactionContext beginDistributedTransaction() throws RecognitionException {
1588 		BeginDistributedTransactionContext _localctx = new BeginDistributedTransactionContext(_ctx, getState());
1589 		enterRule(_localctx, 12, RULE_beginDistributedTransaction);
1590 		int _la;
1591 		try {
1592 			enterOuterAlt(_localctx, 1);
1593 			{
1594 			setState(1072);
1595 			match(BEGIN);
1596 			setState(1073);
1597 			match(DISTRIBUTED);
1598 			setState(1074);
1599 			_la = _input.LA(1);
1600 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1601 			_errHandler.recoverInline(this);
1602 			}
1603 			else {
1604 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1605 				_errHandler.reportMatch(this);
1606 				consume();
1607 			}
1608 			setState(1077);
1609 			_errHandler.sync(this);
1610 			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
1611 			case 1:
1612 				{
1613 				setState(1075);
1614 				transactionName();
1615 				}
1616 				break;
1617 			case 2:
1618 				{
1619 				setState(1076);
1620 				transactionVariableName();
1621 				}
1622 				break;
1623 			}
1624 			}
1625 		}
1626 		catch (RecognitionException re) {
1627 			_localctx.exception = re;
1628 			_errHandler.reportError(this, re);
1629 			_errHandler.recover(this, re);
1630 		}
1631 		finally {
1632 			exitRule();
1633 		}
1634 		return _localctx;
1635 	}
1636 
1637 	public static class CommitContext extends ParserRuleContext {
1638 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1639 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1640 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
1641 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
1642 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
1643 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
1644 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1645 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1646 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1647 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1648 		public TransactionNameContext transactionName() {
1649 			return getRuleContext(TransactionNameContext.class,0);
1650 		}
1651 		public TransactionVariableNameContext transactionVariableName() {
1652 			return getRuleContext(TransactionVariableNameContext.class,0);
1653 		}
1654 		public CommitContext(ParserRuleContext parent, int invokingState) {
1655 			super(parent, invokingState);
1656 		}
1657 		@Override public int getRuleIndex() { return RULE_commit; }
1658 		@Override
1659 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1660 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommit(this);
1661 			else return visitor.visitChildren(this);
1662 		}
1663 	}
1664 
1665 	public final CommitContext commit() throws RecognitionException {
1666 		CommitContext _localctx = new CommitContext(_ctx, getState());
1667 		enterRule(_localctx, 14, RULE_commit);
1668 		int _la;
1669 		try {
1670 			enterOuterAlt(_localctx, 1);
1671 			{
1672 			setState(1079);
1673 			match(COMMIT);
1674 			setState(1085);
1675 			_errHandler.sync(this);
1676 			_la = _input.LA(1);
1677 			if (_la==TRANSACTION || _la==TRAN) {
1678 				{
1679 				setState(1080);
1680 				_la = _input.LA(1);
1681 				if ( !(_la==TRANSACTION || _la==TRAN) ) {
1682 				_errHandler.recoverInline(this);
1683 				}
1684 				else {
1685 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1686 					_errHandler.reportMatch(this);
1687 					consume();
1688 				}
1689 				setState(1083);
1690 				_errHandler.sync(this);
1691 				switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
1692 				case 1:
1693 					{
1694 					setState(1081);
1695 					transactionName();
1696 					}
1697 					break;
1698 				case 2:
1699 					{
1700 					setState(1082);
1701 					transactionVariableName();
1702 					}
1703 					break;
1704 				}
1705 				}
1706 			}
1707 
1708 			setState(1093);
1709 			_errHandler.sync(this);
1710 			_la = _input.LA(1);
1711 			if (_la==WITH) {
1712 				{
1713 				setState(1087);
1714 				match(WITH);
1715 				setState(1088);
1716 				match(LP_);
1717 				setState(1089);
1718 				match(DELAYED_DURABILITY);
1719 				setState(1090);
1720 				match(EQ_);
1721 				setState(1091);
1722 				_la = _input.LA(1);
1723 				if ( !(_la==ON || _la==OFF) ) {
1724 				_errHandler.recoverInline(this);
1725 				}
1726 				else {
1727 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1728 					_errHandler.reportMatch(this);
1729 					consume();
1730 				}
1731 				setState(1092);
1732 				match(RP_);
1733 				}
1734 			}
1735 
1736 			}
1737 		}
1738 		catch (RecognitionException re) {
1739 			_localctx.exception = re;
1740 			_errHandler.reportError(this, re);
1741 			_errHandler.recover(this, re);
1742 		}
1743 		finally {
1744 			exitRule();
1745 		}
1746 		return _localctx;
1747 	}
1748 
1749 	public static class CommitWorkContext extends ParserRuleContext {
1750 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1751 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1752 		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
1753 			super(parent, invokingState);
1754 		}
1755 		@Override public int getRuleIndex() { return RULE_commitWork; }
1756 		@Override
1757 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1758 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommitWork(this);
1759 			else return visitor.visitChildren(this);
1760 		}
1761 	}
1762 
1763 	public final CommitWorkContext commitWork() throws RecognitionException {
1764 		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
1765 		enterRule(_localctx, 16, RULE_commitWork);
1766 		int _la;
1767 		try {
1768 			enterOuterAlt(_localctx, 1);
1769 			{
1770 			setState(1095);
1771 			match(COMMIT);
1772 			setState(1097);
1773 			_errHandler.sync(this);
1774 			_la = _input.LA(1);
1775 			if (_la==WORK) {
1776 				{
1777 				setState(1096);
1778 				match(WORK);
1779 				}
1780 			}
1781 
1782 			}
1783 		}
1784 		catch (RecognitionException re) {
1785 			_localctx.exception = re;
1786 			_errHandler.reportError(this, re);
1787 			_errHandler.recover(this, re);
1788 		}
1789 		finally {
1790 			exitRule();
1791 		}
1792 		return _localctx;
1793 	}
1794 
1795 	public static class RollbackContext extends ParserRuleContext {
1796 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1797 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1798 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1799 		public TransactionNameContext transactionName() {
1800 			return getRuleContext(TransactionNameContext.class,0);
1801 		}
1802 		public TransactionVariableNameContext transactionVariableName() {
1803 			return getRuleContext(TransactionVariableNameContext.class,0);
1804 		}
1805 		public SavepointNameContext savepointName() {
1806 			return getRuleContext(SavepointNameContext.class,0);
1807 		}
1808 		public SavepointVariableNameContext savepointVariableName() {
1809 			return getRuleContext(SavepointVariableNameContext.class,0);
1810 		}
1811 		public RollbackContext(ParserRuleContext parent, int invokingState) {
1812 			super(parent, invokingState);
1813 		}
1814 		@Override public int getRuleIndex() { return RULE_rollback; }
1815 		@Override
1816 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1817 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollback(this);
1818 			else return visitor.visitChildren(this);
1819 		}
1820 	}
1821 
1822 	public final RollbackContext rollback() throws RecognitionException {
1823 		RollbackContext _localctx = new RollbackContext(_ctx, getState());
1824 		enterRule(_localctx, 18, RULE_rollback);
1825 		int _la;
1826 		try {
1827 			enterOuterAlt(_localctx, 1);
1828 			{
1829 			setState(1099);
1830 			match(ROLLBACK);
1831 			setState(1100);
1832 			_la = _input.LA(1);
1833 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1834 			_errHandler.recoverInline(this);
1835 			}
1836 			else {
1837 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1838 				_errHandler.reportMatch(this);
1839 				consume();
1840 			}
1841 			setState(1105);
1842 			_errHandler.sync(this);
1843 			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
1844 			case 1:
1845 				{
1846 				setState(1101);
1847 				transactionName();
1848 				}
1849 				break;
1850 			case 2:
1851 				{
1852 				setState(1102);
1853 				transactionVariableName();
1854 				}
1855 				break;
1856 			case 3:
1857 				{
1858 				setState(1103);
1859 				savepointName();
1860 				}
1861 				break;
1862 			case 4:
1863 				{
1864 				setState(1104);
1865 				savepointVariableName();
1866 				}
1867 				break;
1868 			}
1869 			}
1870 		}
1871 		catch (RecognitionException re) {
1872 			_localctx.exception = re;
1873 			_errHandler.reportError(this, re);
1874 			_errHandler.recover(this, re);
1875 		}
1876 		finally {
1877 			exitRule();
1878 		}
1879 		return _localctx;
1880 	}
1881 
1882 	public static class RollbackWorkContext extends ParserRuleContext {
1883 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1884 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1885 		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
1886 			super(parent, invokingState);
1887 		}
1888 		@Override public int getRuleIndex() { return RULE_rollbackWork; }
1889 		@Override
1890 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1891 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollbackWork(this);
1892 			else return visitor.visitChildren(this);
1893 		}
1894 	}
1895 
1896 	public final RollbackWorkContext rollbackWork() throws RecognitionException {
1897 		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
1898 		enterRule(_localctx, 20, RULE_rollbackWork);
1899 		int _la;
1900 		try {
1901 			enterOuterAlt(_localctx, 1);
1902 			{
1903 			setState(1107);
1904 			match(ROLLBACK);
1905 			setState(1109);
1906 			_errHandler.sync(this);
1907 			_la = _input.LA(1);
1908 			if (_la==WORK) {
1909 				{
1910 				setState(1108);
1911 				match(WORK);
1912 				}
1913 			}
1914 
1915 			}
1916 		}
1917 		catch (RecognitionException re) {
1918 			_localctx.exception = re;
1919 			_errHandler.reportError(this, re);
1920 			_errHandler.recover(this, re);
1921 		}
1922 		finally {
1923 			exitRule();
1924 		}
1925 		return _localctx;
1926 	}
1927 
1928 	public static class SavepointContext extends ParserRuleContext {
1929 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
1930 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1931 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1932 		public SavepointNameContext savepointName() {
1933 			return getRuleContext(SavepointNameContext.class,0);
1934 		}
1935 		public SavepointVariableNameContext savepointVariableName() {
1936 			return getRuleContext(SavepointVariableNameContext.class,0);
1937 		}
1938 		public SavepointContext(ParserRuleContext parent, int invokingState) {
1939 			super(parent, invokingState);
1940 		}
1941 		@Override public int getRuleIndex() { return RULE_savepoint; }
1942 		@Override
1943 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1944 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepoint(this);
1945 			else return visitor.visitChildren(this);
1946 		}
1947 	}
1948 
1949 	public final SavepointContext savepoint() throws RecognitionException {
1950 		SavepointContext _localctx = new SavepointContext(_ctx, getState());
1951 		enterRule(_localctx, 22, RULE_savepoint);
1952 		int _la;
1953 		try {
1954 			enterOuterAlt(_localctx, 1);
1955 			{
1956 			setState(1111);
1957 			match(SAVE);
1958 			setState(1112);
1959 			_la = _input.LA(1);
1960 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1961 			_errHandler.recoverInline(this);
1962 			}
1963 			else {
1964 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1965 				_errHandler.reportMatch(this);
1966 				consume();
1967 			}
1968 			setState(1115);
1969 			_errHandler.sync(this);
1970 			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
1971 			case 1:
1972 				{
1973 				setState(1113);
1974 				savepointName();
1975 				}
1976 				break;
1977 			case 2:
1978 				{
1979 				setState(1114);
1980 				savepointVariableName();
1981 				}
1982 				break;
1983 			}
1984 			}
1985 		}
1986 		catch (RecognitionException re) {
1987 			_localctx.exception = re;
1988 			_errHandler.reportError(this, re);
1989 			_errHandler.recover(this, re);
1990 		}
1991 		finally {
1992 			exitRule();
1993 		}
1994 		return _localctx;
1995 	}
1996 
1997 	public static class ParameterMarkerContext extends ParserRuleContext {
1998 		public TerminalNode QUESTION_() { return getToken(SQLServerStatementParser.QUESTION_, 0); }
1999 		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
2000 			super(parent, invokingState);
2001 		}
2002 		@Override public int getRuleIndex() { return RULE_parameterMarker; }
2003 		@Override
2004 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2005 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitParameterMarker(this);
2006 			else return visitor.visitChildren(this);
2007 		}
2008 	}
2009 
2010 	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
2011 		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
2012 		enterRule(_localctx, 24, RULE_parameterMarker);
2013 		try {
2014 			enterOuterAlt(_localctx, 1);
2015 			{
2016 			setState(1117);
2017 			match(QUESTION_);
2018 			}
2019 		}
2020 		catch (RecognitionException re) {
2021 			_localctx.exception = re;
2022 			_errHandler.reportError(this, re);
2023 			_errHandler.recover(this, re);
2024 		}
2025 		finally {
2026 			exitRule();
2027 		}
2028 		return _localctx;
2029 	}
2030 
2031 	public static class LiteralsContext extends ParserRuleContext {
2032 		public StringLiteralsContext stringLiterals() {
2033 			return getRuleContext(StringLiteralsContext.class,0);
2034 		}
2035 		public NumberLiteralsContext numberLiterals() {
2036 			return getRuleContext(NumberLiteralsContext.class,0);
2037 		}
2038 		public DateTimeLiteralsContext dateTimeLiterals() {
2039 			return getRuleContext(DateTimeLiteralsContext.class,0);
2040 		}
2041 		public HexadecimalLiteralsContext hexadecimalLiterals() {
2042 			return getRuleContext(HexadecimalLiteralsContext.class,0);
2043 		}
2044 		public BitValueLiteralsContext bitValueLiterals() {
2045 			return getRuleContext(BitValueLiteralsContext.class,0);
2046 		}
2047 		public BooleanLiteralsContext booleanLiterals() {
2048 			return getRuleContext(BooleanLiteralsContext.class,0);
2049 		}
2050 		public NullValueLiteralsContext nullValueLiterals() {
2051 			return getRuleContext(NullValueLiteralsContext.class,0);
2052 		}
2053 		public LiteralsContext(ParserRuleContext parent, int invokingState) {
2054 			super(parent, invokingState);
2055 		}
2056 		@Override public int getRuleIndex() { return RULE_literals; }
2057 		@Override
2058 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2059 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLiterals(this);
2060 			else return visitor.visitChildren(this);
2061 		}
2062 	}
2063 
2064 	public final LiteralsContext literals() throws RecognitionException {
2065 		LiteralsContext _localctx = new LiteralsContext(_ctx, getState());
2066 		enterRule(_localctx, 26, RULE_literals);
2067 		try {
2068 			setState(1126);
2069 			_errHandler.sync(this);
2070 			switch (_input.LA(1)) {
2071 			case STRING_:
2072 			case NCHAR_TEXT:
2073 				enterOuterAlt(_localctx, 1);
2074 				{
2075 				setState(1119);
2076 				stringLiterals();
2077 				}
2078 				break;
2079 			case PLUS_:
2080 			case MINUS_:
2081 			case NUMBER_:
2082 				enterOuterAlt(_localctx, 2);
2083 				{
2084 				setState(1120);
2085 				numberLiterals();
2086 				}
2087 				break;
2088 			case LBE_:
2089 			case DATE:
2090 			case TIME:
2091 			case TIMESTAMP:
2092 				enterOuterAlt(_localctx, 3);
2093 				{
2094 				setState(1121);
2095 				dateTimeLiterals();
2096 				}
2097 				break;
2098 			case HEX_DIGIT_:
2099 				enterOuterAlt(_localctx, 4);
2100 				{
2101 				setState(1122);
2102 				hexadecimalLiterals();
2103 				}
2104 				break;
2105 			case BIT_NUM_:
2106 				enterOuterAlt(_localctx, 5);
2107 				{
2108 				setState(1123);
2109 				bitValueLiterals();
2110 				}
2111 				break;
2112 			case TRUE:
2113 			case FALSE:
2114 				enterOuterAlt(_localctx, 6);
2115 				{
2116 				setState(1124);
2117 				booleanLiterals();
2118 				}
2119 				break;
2120 			case NULL:
2121 				enterOuterAlt(_localctx, 7);
2122 				{
2123 				setState(1125);
2124 				nullValueLiterals();
2125 				}
2126 				break;
2127 			default:
2128 				throw new NoViableAltException(this);
2129 			}
2130 		}
2131 		catch (RecognitionException re) {
2132 			_localctx.exception = re;
2133 			_errHandler.reportError(this, re);
2134 			_errHandler.recover(this, re);
2135 		}
2136 		finally {
2137 			exitRule();
2138 		}
2139 		return _localctx;
2140 	}
2141 
2142 	public static class StringLiteralsContext extends ParserRuleContext {
2143 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2144 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
2145 		public StringLiteralsContext(ParserRuleContext parent, int invokingState) {
2146 			super(parent, invokingState);
2147 		}
2148 		@Override public int getRuleIndex() { return RULE_stringLiterals; }
2149 		@Override
2150 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2151 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStringLiterals(this);
2152 			else return visitor.visitChildren(this);
2153 		}
2154 	}
2155 
2156 	public final StringLiteralsContext stringLiterals() throws RecognitionException {
2157 		StringLiteralsContext _localctx = new StringLiteralsContext(_ctx, getState());
2158 		enterRule(_localctx, 28, RULE_stringLiterals);
2159 		int _la;
2160 		try {
2161 			enterOuterAlt(_localctx, 1);
2162 			{
2163 			setState(1128);
2164 			_la = _input.LA(1);
2165 			if ( !(_la==STRING_ || _la==NCHAR_TEXT) ) {
2166 			_errHandler.recoverInline(this);
2167 			}
2168 			else {
2169 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2170 				_errHandler.reportMatch(this);
2171 				consume();
2172 			}
2173 			}
2174 		}
2175 		catch (RecognitionException re) {
2176 			_localctx.exception = re;
2177 			_errHandler.reportError(this, re);
2178 			_errHandler.recover(this, re);
2179 		}
2180 		finally {
2181 			exitRule();
2182 		}
2183 		return _localctx;
2184 	}
2185 
2186 	public static class NumberLiteralsContext extends ParserRuleContext {
2187 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
2188 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
2189 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
2190 		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
2191 			super(parent, invokingState);
2192 		}
2193 		@Override public int getRuleIndex() { return RULE_numberLiterals; }
2194 		@Override
2195 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2196 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberLiterals(this);
2197 			else return visitor.visitChildren(this);
2198 		}
2199 	}
2200 
2201 	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
2202 		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
2203 		enterRule(_localctx, 30, RULE_numberLiterals);
2204 		int _la;
2205 		try {
2206 			enterOuterAlt(_localctx, 1);
2207 			{
2208 			setState(1131);
2209 			_errHandler.sync(this);
2210 			_la = _input.LA(1);
2211 			if (_la==PLUS_ || _la==MINUS_) {
2212 				{
2213 				setState(1130);
2214 				_la = _input.LA(1);
2215 				if ( !(_la==PLUS_ || _la==MINUS_) ) {
2216 				_errHandler.recoverInline(this);
2217 				}
2218 				else {
2219 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2220 					_errHandler.reportMatch(this);
2221 					consume();
2222 				}
2223 				}
2224 			}
2225 
2226 			setState(1133);
2227 			match(NUMBER_);
2228 			}
2229 		}
2230 		catch (RecognitionException re) {
2231 			_localctx.exception = re;
2232 			_errHandler.reportError(this, re);
2233 			_errHandler.recover(this, re);
2234 		}
2235 		finally {
2236 			exitRule();
2237 		}
2238 		return _localctx;
2239 	}
2240 
2241 	public static class DateTimeLiteralsContext extends ParserRuleContext {
2242 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2243 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
2244 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
2245 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
2246 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
2247 		public IdentifierContext identifier() {
2248 			return getRuleContext(IdentifierContext.class,0);
2249 		}
2250 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
2251 		public DateTimeLiteralsContext(ParserRuleContext parent, int invokingState) {
2252 			super(parent, invokingState);
2253 		}
2254 		@Override public int getRuleIndex() { return RULE_dateTimeLiterals; }
2255 		@Override
2256 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2257 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDateTimeLiterals(this);
2258 			else return visitor.visitChildren(this);
2259 		}
2260 	}
2261 
2262 	public final DateTimeLiteralsContext dateTimeLiterals() throws RecognitionException {
2263 		DateTimeLiteralsContext _localctx = new DateTimeLiteralsContext(_ctx, getState());
2264 		enterRule(_localctx, 32, RULE_dateTimeLiterals);
2265 		int _la;
2266 		try {
2267 			setState(1142);
2268 			_errHandler.sync(this);
2269 			switch (_input.LA(1)) {
2270 			case DATE:
2271 			case TIME:
2272 			case TIMESTAMP:
2273 				enterOuterAlt(_localctx, 1);
2274 				{
2275 				setState(1135);
2276 				_la = _input.LA(1);
2277 				if ( !(((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (DATE - 135)) | (1L << (TIME - 135)) | (1L << (TIMESTAMP - 135)))) != 0)) ) {
2278 				_errHandler.recoverInline(this);
2279 				}
2280 				else {
2281 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2282 					_errHandler.reportMatch(this);
2283 					consume();
2284 				}
2285 				setState(1136);
2286 				match(STRING_);
2287 				}
2288 				break;
2289 			case LBE_:
2290 				enterOuterAlt(_localctx, 2);
2291 				{
2292 				setState(1137);
2293 				match(LBE_);
2294 				setState(1138);
2295 				identifier();
2296 				setState(1139);
2297 				match(STRING_);
2298 				setState(1140);
2299 				match(RBE_);
2300 				}
2301 				break;
2302 			default:
2303 				throw new NoViableAltException(this);
2304 			}
2305 		}
2306 		catch (RecognitionException re) {
2307 			_localctx.exception = re;
2308 			_errHandler.reportError(this, re);
2309 			_errHandler.recover(this, re);
2310 		}
2311 		finally {
2312 			exitRule();
2313 		}
2314 		return _localctx;
2315 	}
2316 
2317 	public static class HexadecimalLiteralsContext extends ParserRuleContext {
2318 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
2319 		public HexadecimalLiteralsContext(ParserRuleContext parent, int invokingState) {
2320 			super(parent, invokingState);
2321 		}
2322 		@Override public int getRuleIndex() { return RULE_hexadecimalLiterals; }
2323 		@Override
2324 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2325 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHexadecimalLiterals(this);
2326 			else return visitor.visitChildren(this);
2327 		}
2328 	}
2329 
2330 	public final HexadecimalLiteralsContext hexadecimalLiterals() throws RecognitionException {
2331 		HexadecimalLiteralsContext _localctx = new HexadecimalLiteralsContext(_ctx, getState());
2332 		enterRule(_localctx, 34, RULE_hexadecimalLiterals);
2333 		try {
2334 			enterOuterAlt(_localctx, 1);
2335 			{
2336 			setState(1144);
2337 			match(HEX_DIGIT_);
2338 			}
2339 		}
2340 		catch (RecognitionException re) {
2341 			_localctx.exception = re;
2342 			_errHandler.reportError(this, re);
2343 			_errHandler.recover(this, re);
2344 		}
2345 		finally {
2346 			exitRule();
2347 		}
2348 		return _localctx;
2349 	}
2350 
2351 	public static class BitValueLiteralsContext extends ParserRuleContext {
2352 		public TerminalNode BIT_NUM_() { return getToken(SQLServerStatementParser.BIT_NUM_, 0); }
2353 		public BitValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2354 			super(parent, invokingState);
2355 		}
2356 		@Override public int getRuleIndex() { return RULE_bitValueLiterals; }
2357 		@Override
2358 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2359 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitValueLiterals(this);
2360 			else return visitor.visitChildren(this);
2361 		}
2362 	}
2363 
2364 	public final BitValueLiteralsContext bitValueLiterals() throws RecognitionException {
2365 		BitValueLiteralsContext _localctx = new BitValueLiteralsContext(_ctx, getState());
2366 		enterRule(_localctx, 36, RULE_bitValueLiterals);
2367 		try {
2368 			enterOuterAlt(_localctx, 1);
2369 			{
2370 			setState(1146);
2371 			match(BIT_NUM_);
2372 			}
2373 		}
2374 		catch (RecognitionException re) {
2375 			_localctx.exception = re;
2376 			_errHandler.reportError(this, re);
2377 			_errHandler.recover(this, re);
2378 		}
2379 		finally {
2380 			exitRule();
2381 		}
2382 		return _localctx;
2383 	}
2384 
2385 	public static class BooleanLiteralsContext extends ParserRuleContext {
2386 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
2387 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
2388 		public BooleanLiteralsContext(ParserRuleContext parent, int invokingState) {
2389 			super(parent, invokingState);
2390 		}
2391 		@Override public int getRuleIndex() { return RULE_booleanLiterals; }
2392 		@Override
2393 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2394 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanLiterals(this);
2395 			else return visitor.visitChildren(this);
2396 		}
2397 	}
2398 
2399 	public final BooleanLiteralsContext booleanLiterals() throws RecognitionException {
2400 		BooleanLiteralsContext _localctx = new BooleanLiteralsContext(_ctx, getState());
2401 		enterRule(_localctx, 38, RULE_booleanLiterals);
2402 		int _la;
2403 		try {
2404 			enterOuterAlt(_localctx, 1);
2405 			{
2406 			setState(1148);
2407 			_la = _input.LA(1);
2408 			if ( !(_la==TRUE || _la==FALSE) ) {
2409 			_errHandler.recoverInline(this);
2410 			}
2411 			else {
2412 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2413 				_errHandler.reportMatch(this);
2414 				consume();
2415 			}
2416 			}
2417 		}
2418 		catch (RecognitionException re) {
2419 			_localctx.exception = re;
2420 			_errHandler.reportError(this, re);
2421 			_errHandler.recover(this, re);
2422 		}
2423 		finally {
2424 			exitRule();
2425 		}
2426 		return _localctx;
2427 	}
2428 
2429 	public static class NullValueLiteralsContext extends ParserRuleContext {
2430 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
2431 		public NullValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2432 			super(parent, invokingState);
2433 		}
2434 		@Override public int getRuleIndex() { return RULE_nullValueLiterals; }
2435 		@Override
2436 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2437 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullValueLiterals(this);
2438 			else return visitor.visitChildren(this);
2439 		}
2440 	}
2441 
2442 	public final NullValueLiteralsContext nullValueLiterals() throws RecognitionException {
2443 		NullValueLiteralsContext _localctx = new NullValueLiteralsContext(_ctx, getState());
2444 		enterRule(_localctx, 40, RULE_nullValueLiterals);
2445 		try {
2446 			enterOuterAlt(_localctx, 1);
2447 			{
2448 			setState(1150);
2449 			match(NULL);
2450 			}
2451 		}
2452 		catch (RecognitionException re) {
2453 			_localctx.exception = re;
2454 			_errHandler.reportError(this, re);
2455 			_errHandler.recover(this, re);
2456 		}
2457 		finally {
2458 			exitRule();
2459 		}
2460 		return _localctx;
2461 	}
2462 
2463 	public static class IdentifierContext extends ParserRuleContext {
2464 		public RegularIdentifierContext regularIdentifier() {
2465 			return getRuleContext(RegularIdentifierContext.class,0);
2466 		}
2467 		public DelimitedIdentifierContext delimitedIdentifier() {
2468 			return getRuleContext(DelimitedIdentifierContext.class,0);
2469 		}
2470 		public IdentifierContext(ParserRuleContext parent, int invokingState) {
2471 			super(parent, invokingState);
2472 		}
2473 		@Override public int getRuleIndex() { return RULE_identifier; }
2474 		@Override
2475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIdentifier(this);
2477 			else return visitor.visitChildren(this);
2478 		}
2479 	}
2480 
2481 	public final IdentifierContext identifier() throws RecognitionException {
2482 		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
2483 		enterRule(_localctx, 42, RULE_identifier);
2484 		try {
2485 			setState(1154);
2486 			_errHandler.sync(this);
2487 			switch (_input.LA(1)) {
2488 			case TRUNCATE:
2489 			case SCHEMA:
2490 			case COLUMNS:
2491 			case PRECISION:
2492 			case FUNCTION:
2493 			case TRIGGER:
2494 			case CAST:
2495 			case SUBSTRING:
2496 			case OFF:
2497 			case GROUP:
2498 			case LIMIT:
2499 			case OFFSET:
2500 			case SAVEPOINT:
2501 			case BOOLEAN:
2502 			case ARRAY:
2503 			case DATE:
2504 			case LOCALTIME:
2505 			case LOCALTIMESTAMP:
2506 			case QUARTER:
2507 			case WEEK:
2508 			case DAY:
2509 			case SECOND:
2510 			case MICROSECOND:
2511 			case MAX:
2512 			case MIN:
2513 			case SUM:
2514 			case COUNT:
2515 			case AVG:
2516 			case ENABLE:
2517 			case DISABLE:
2518 			case INSTANCE:
2519 			case DO:
2520 			case DEFINER:
2521 			case SQL:
2522 			case CASCADED:
2523 			case LOCAL:
2524 			case NEXT:
2525 			case NAME:
2526 			case INTEGER:
2527 			case TYPE:
2528 			case TEXT:
2529 			case VIEWS:
2530 			case READ_ONLY:
2531 			case DATABASE:
2532 			case RETURNS:
2533 			case DATEPART:
2534 			case PASSWORD:
2535 			case BINARY:
2536 			case HIDDEN_:
2537 			case MOD:
2538 			case PARTITION:
2539 			case PARTITIONS:
2540 			case TOP:
2541 			case ROW:
2542 			case ROWS:
2543 			case XOR:
2544 			case ALWAYS:
2545 			case ROLE:
2546 			case START:
2547 			case ALGORITHM:
2548 			case AUTO:
2549 			case BLOCKERS:
2550 			case CLUSTERED:
2551 			case NONCLUSTERED:
2552 			case COLUMNSTORE:
2553 			case CONTENT:
2554 			case YEARS:
2555 			case MONTHS:
2556 			case WEEKS:
2557 			case DAYS:
2558 			case MINUTES:
2559 			case DENY:
2560 			case DETERMINISTIC:
2561 			case DISTRIBUTION:
2562 			case DOCUMENT:
2563 			case DURABILITY:
2564 			case ENCRYPTED:
2565 			case FILESTREAM:
2566 			case FILETABLE:
2567 			case FILLFACTOR:
2568 			case FOLLOWING:
2569 			case HASH:
2570 			case HEAP:
2571 			case INBOUND:
2572 			case OUTBOUND:
2573 			case UNBOUNDED:
2574 			case INFINITE:
2575 			case LOGIN:
2576 			case MASKED:
2577 			case MAXDOP:
2578 			case MOVE:
2579 			case NOCHECK:
2580 			case OBJECT:
2581 			case ONLINE:
2582 			case OVER:
2583 			case PAGE:
2584 			case PAUSED:
2585 			case PERIOD:
2586 			case PERSISTED:
2587 			case PRECEDING:
2588 			case RANDOMIZED:
2589 			case RANGE:
2590 			case REBUILD:
2591 			case REPLICATE:
2592 			case REPLICATION:
2593 			case RESUMABLE:
2594 			case ROWGUIDCOL:
2595 			case SAVE:
2596 			case SELF:
2597 			case SPARSE:
2598 			case SWITCH:
2599 			case TRAN:
2600 			case TRANCOUNT:
2601 			case CONTROL:
2602 			case CONCAT:
2603 			case TAKE:
2604 			case OWNERSHIP:
2605 			case DEFINITION:
2606 			case APPLICATION:
2607 			case ASSEMBLY:
2608 			case SYMMETRIC:
2609 			case ASYMMETRIC:
2610 			case SERVER:
2611 			case RECEIVE:
2612 			case CHANGE:
2613 			case TRACE:
2614 			case TRACKING:
2615 			case RESOURCES:
2616 			case SETTINGS:
2617 			case STATE:
2618 			case AVAILABILITY:
2619 			case CREDENTIAL:
2620 			case ENDPOINT:
2621 			case EVENT:
2622 			case NOTIFICATION:
2623 			case LINKED:
2624 			case AUDIT:
2625 			case DDL:
2626 			case XML:
2627 			case IMPERSONATE:
2628 			case SECURABLES:
2629 			case AUTHENTICATE:
2630 			case EXTERNAL:
2631 			case ACCESS:
2632 			case ADMINISTER:
2633 			case BULK:
2634 			case OPERATIONS:
2635 			case UNSAFE:
2636 			case SHUTDOWN:
2637 			case SCOPED:
2638 			case CONFIGURATION:
2639 			case DATASPACE:
2640 			case SERVICE:
2641 			case CERTIFICATE:
2642 			case CONTRACT:
2643 			case ENCRYPTION:
2644 			case MASTER:
2645 			case DATA:
2646 			case SOURCE:
2647 			case FILE:
2648 			case FORMAT:
2649 			case LIBRARY:
2650 			case FULLTEXT:
2651 			case MASK:
2652 			case UNMASK:
2653 			case MESSAGE:
2654 			case REMOTE:
2655 			case BINDING:
2656 			case ROUTE:
2657 			case SECURITY:
2658 			case POLICY:
2659 			case AGGREGATE:
2660 			case QUEUE:
2661 			case RULE:
2662 			case SYNONYM:
2663 			case COLLECTION:
2664 			case SCRIPT:
2665 			case KILL:
2666 			case BACKUP:
2667 			case LOG:
2668 			case SHOWPLAN:
2669 			case SUBSCRIBE:
2670 			case QUERY:
2671 			case NOTIFICATIONS:
2672 			case CHECKPOINT:
2673 			case SEQUENCE:
2674 			case ABORT_AFTER_WAIT:
2675 			case ALLOW_PAGE_LOCKS:
2676 			case ALLOW_ROW_LOCKS:
2677 			case ALL_SPARSE_COLUMNS:
2678 			case BUCKET_COUNT:
2679 			case COLUMNSTORE_ARCHIVE:
2680 			case COLUMN_ENCRYPTION_KEY:
2681 			case COLUMN_SET:
2682 			case COMPRESSION_DELAY:
2683 			case DATABASE_DEAULT:
2684 			case DATA_COMPRESSION:
2685 			case DATA_CONSISTENCY_CHECK:
2686 			case ENCRYPTION_TYPE:
2687 			case SYSTEM_TIME:
2688 			case SYSTEM_VERSIONING:
2689 			case TEXTIMAGE_ON:
2690 			case WAIT_AT_LOW_PRIORITY:
2691 			case STATISTICS_INCREMENTAL:
2692 			case STATISTICS_NORECOMPUTE:
2693 			case ROUND_ROBIN:
2694 			case SCHEMA_AND_DATA:
2695 			case SCHEMA_ONLY:
2696 			case SORT_IN_TEMPDB:
2697 			case IGNORE_DUP_KEY:
2698 			case IMPLICIT_TRANSACTIONS:
2699 			case MAX_DURATION:
2700 			case MEMORY_OPTIMIZED:
2701 			case MIGRATION_STATE:
2702 			case PAD_INDEX:
2703 			case REMOTE_DATA_ARCHIVE:
2704 			case FILESTREAM_ON:
2705 			case FILETABLE_COLLATE_FILENAME:
2706 			case FILETABLE_DIRECTORY:
2707 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
2708 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
2709 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
2710 			case FILTER_PREDICATE:
2711 			case HISTORY_RETENTION_PERIOD:
2712 			case HISTORY_TABLE:
2713 			case LOCK_ESCALATION:
2714 			case DROP_EXISTING:
2715 			case ROW_NUMBER:
2716 			case FIRST:
2717 			case DATETIME2:
2718 			case OUTPUT:
2719 			case INSERTED:
2720 			case DELETED:
2721 			case FILENAME:
2722 			case MAXSIZE:
2723 			case FILEGROWTH:
2724 			case UNLIMITED:
2725 			case KB:
2726 			case MB:
2727 			case GB:
2728 			case TB:
2729 			case MEMORY_OPTIMIZED_DATA:
2730 			case FILEGROUP:
2731 			case NON_TRANSACTED_ACCESS:
2732 			case DB_CHAINING:
2733 			case TRUSTWORTHY:
2734 			case FORWARD_ONLY:
2735 			case KEYSET:
2736 			case FAST_FORWARD:
2737 			case SCROLL_LOCKS:
2738 			case OPTIMISTIC:
2739 			case TYPE_WARNING:
2740 			case SCHEMABINDING:
2741 			case CALLER:
2742 			case OWNER:
2743 			case SNAPSHOT:
2744 			case REPEATABLE:
2745 			case SERIALIZABLE:
2746 			case NATIVE_COMPILATION:
2747 			case VIEW_METADATA:
2748 			case INSTEAD:
2749 			case APPEND:
2750 			case INCREMENT:
2751 			case CACHE:
2752 			case MINVALUE:
2753 			case MAXVALUE:
2754 			case RESTART:
2755 			case LOB_COMPACTION:
2756 			case COMPRESS_ALL_ROW_GROUPS:
2757 			case REORGANIZE:
2758 			case RESUME:
2759 			case PAUSE:
2760 			case ABORT:
2761 			case ACCELERATED_DATABASE_RECOVERY:
2762 			case PERSISTENT_VERSION_STORE_FILEGROUP:
2763 			case IMMEDIATE:
2764 			case NO_WAIT:
2765 			case TARGET_RECOVERY_TIME:
2766 			case SECONDS:
2767 			case HONOR_BROKER_PRIORITY:
2768 			case ERROR_BROKER_CONVERSATIONS:
2769 			case NEW_BROKER:
2770 			case DISABLE_BROKER:
2771 			case ENABLE_BROKER:
2772 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
2773 			case READ_COMMITTED_SNAPSHOT:
2774 			case ALLOW_SNAPSHOT_ISOLATION:
2775 			case RECURSIVE_TRIGGERS:
2776 			case QUOTED_IDENTIFIER:
2777 			case NUMERIC_ROUNDABORT:
2778 			case CONCAT_NULL_YIELDS_NULL:
2779 			case COMPATIBILITY_LEVEL:
2780 			case ARITHABORT:
2781 			case ANSI_WARNINGS:
2782 			case ANSI_PADDING:
2783 			case ANSI_NULLS:
2784 			case ANSI_NULL_DEFAULT:
2785 			case PAGE_VERIFY:
2786 			case CHECKSUM:
2787 			case TORN_PAGE_DETECTION:
2788 			case BULK_LOGGED:
2789 			case RECOVERY:
2790 			case TOTAL_EXECUTION_CPU_TIME_MS:
2791 			case TOTAL_COMPILE_CPU_TIME_MS:
2792 			case STALE_CAPTURE_POLICY_THRESHOLD:
2793 			case EXECUTION_COUNT:
2794 			case QUERY_CAPTURE_POLICY:
2795 			case WAIT_STATS_CAPTURE_MODE:
2796 			case MAX_PLANS_PER_QUERY:
2797 			case QUERY_CAPTURE_MODE:
2798 			case SIZE_BASED_CLEANUP_MODE:
2799 			case INTERVAL_LENGTH_MINUTES:
2800 			case MAX_STORAGE_SIZE_MB:
2801 			case DATA_FLUSH_INTERVAL_SECONDS:
2802 			case CLEANUP_POLICY:
2803 			case CUSTOM:
2804 			case STALE_QUERY_THRESHOLD_DAYS:
2805 			case OPERATION_MODE:
2806 			case QUERY_STORE:
2807 			case CURSOR_DEFAULT:
2808 			case GLOBAL:
2809 			case CURSOR_CLOSE_ON_COMMIT:
2810 			case HOURS:
2811 			case CHANGE_RETENTION:
2812 			case AUTO_CLEANUP:
2813 			case CHANGE_TRACKING:
2814 			case AUTOMATIC_TUNING:
2815 			case FORCE_LAST_GOOD_PLAN:
2816 			case AUTO_UPDATE_STATISTICS_ASYNC:
2817 			case AUTO_UPDATE_STATISTICS:
2818 			case AUTO_SHRINK:
2819 			case AUTO_CREATE_STATISTICS:
2820 			case INCREMENTAL:
2821 			case AUTO_CLOSE:
2822 			case DATA_RETENTION:
2823 			case TEMPORAL_HISTORY_RETENTION:
2824 			case EDITION:
2825 			case MIXED_PAGE_ALLOCATION:
2826 			case DISABLED:
2827 			case ALLOWED:
2828 			case HADR:
2829 			case MULTI_USER:
2830 			case RESTRICTED_USER:
2831 			case SINGLE_USER:
2832 			case OFFLINE:
2833 			case EMERGENCY:
2834 			case SUSPEND:
2835 			case DATE_CORRELATION_OPTIMIZATION:
2836 			case ELASTIC_POOL:
2837 			case SERVICE_OBJECTIVE:
2838 			case DATABASE_NAME:
2839 			case ALLOW_CONNECTIONS:
2840 			case GEO:
2841 			case NAMED:
2842 			case DATEFIRST:
2843 			case BACKUP_STORAGE_REDUNDANCY:
2844 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
2845 			case SECONDARY:
2846 			case FAILOVER:
2847 			case DEFAULT_FULLTEXT_LANGUAGE:
2848 			case DEFAULT_LANGUAGE:
2849 			case INLINE:
2850 			case NESTED_TRIGGERS:
2851 			case TRANSFORM_NOISE_WORDS:
2852 			case TWO_DIGIT_YEAR_CUTOFF:
2853 			case PERSISTENT_LOG_BUFFER:
2854 			case DIRECTORY_NAME:
2855 			case DATEFORMAT:
2856 			case DELAYED_DURABILITY:
2857 			case AUTHORIZATION:
2858 			case TRANSFER:
2859 			case PROVIDER:
2860 			case SEARCH:
2861 			case MEMBER:
2862 			case IDENTIFIER_:
2863 				enterOuterAlt(_localctx, 1);
2864 				{
2865 				setState(1152);
2866 				regularIdentifier();
2867 				}
2868 				break;
2869 			case DELIMITED_IDENTIFIER_:
2870 				enterOuterAlt(_localctx, 2);
2871 				{
2872 				setState(1153);
2873 				delimitedIdentifier();
2874 				}
2875 				break;
2876 			default:
2877 				throw new NoViableAltException(this);
2878 			}
2879 		}
2880 		catch (RecognitionException re) {
2881 			_localctx.exception = re;
2882 			_errHandler.reportError(this, re);
2883 			_errHandler.recover(this, re);
2884 		}
2885 		finally {
2886 			exitRule();
2887 		}
2888 		return _localctx;
2889 	}
2890 
2891 	public static class RegularIdentifierContext extends ParserRuleContext {
2892 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
2893 		public UnreservedWordContext unreservedWord() {
2894 			return getRuleContext(UnreservedWordContext.class,0);
2895 		}
2896 		public RegularIdentifierContext(ParserRuleContext parent, int invokingState) {
2897 			super(parent, invokingState);
2898 		}
2899 		@Override public int getRuleIndex() { return RULE_regularIdentifier; }
2900 		@Override
2901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularIdentifier(this);
2903 			else return visitor.visitChildren(this);
2904 		}
2905 	}
2906 
2907 	public final RegularIdentifierContext regularIdentifier() throws RecognitionException {
2908 		RegularIdentifierContext _localctx = new RegularIdentifierContext(_ctx, getState());
2909 		enterRule(_localctx, 44, RULE_regularIdentifier);
2910 		try {
2911 			setState(1158);
2912 			_errHandler.sync(this);
2913 			switch (_input.LA(1)) {
2914 			case IDENTIFIER_:
2915 				enterOuterAlt(_localctx, 1);
2916 				{
2917 				setState(1156);
2918 				match(IDENTIFIER_);
2919 				}
2920 				break;
2921 			case TRUNCATE:
2922 			case SCHEMA:
2923 			case COLUMNS:
2924 			case PRECISION:
2925 			case FUNCTION:
2926 			case TRIGGER:
2927 			case CAST:
2928 			case SUBSTRING:
2929 			case OFF:
2930 			case GROUP:
2931 			case LIMIT:
2932 			case OFFSET:
2933 			case SAVEPOINT:
2934 			case BOOLEAN:
2935 			case ARRAY:
2936 			case DATE:
2937 			case LOCALTIME:
2938 			case LOCALTIMESTAMP:
2939 			case QUARTER:
2940 			case WEEK:
2941 			case DAY:
2942 			case SECOND:
2943 			case MICROSECOND:
2944 			case MAX:
2945 			case MIN:
2946 			case SUM:
2947 			case COUNT:
2948 			case AVG:
2949 			case ENABLE:
2950 			case DISABLE:
2951 			case INSTANCE:
2952 			case DO:
2953 			case DEFINER:
2954 			case SQL:
2955 			case CASCADED:
2956 			case LOCAL:
2957 			case NEXT:
2958 			case NAME:
2959 			case INTEGER:
2960 			case TYPE:
2961 			case TEXT:
2962 			case VIEWS:
2963 			case READ_ONLY:
2964 			case DATABASE:
2965 			case RETURNS:
2966 			case DATEPART:
2967 			case PASSWORD:
2968 			case BINARY:
2969 			case HIDDEN_:
2970 			case MOD:
2971 			case PARTITION:
2972 			case PARTITIONS:
2973 			case TOP:
2974 			case ROW:
2975 			case ROWS:
2976 			case XOR:
2977 			case ALWAYS:
2978 			case ROLE:
2979 			case START:
2980 			case ALGORITHM:
2981 			case AUTO:
2982 			case BLOCKERS:
2983 			case CLUSTERED:
2984 			case NONCLUSTERED:
2985 			case COLUMNSTORE:
2986 			case CONTENT:
2987 			case YEARS:
2988 			case MONTHS:
2989 			case WEEKS:
2990 			case DAYS:
2991 			case MINUTES:
2992 			case DENY:
2993 			case DETERMINISTIC:
2994 			case DISTRIBUTION:
2995 			case DOCUMENT:
2996 			case DURABILITY:
2997 			case ENCRYPTED:
2998 			case FILESTREAM:
2999 			case FILETABLE:
3000 			case FILLFACTOR:
3001 			case FOLLOWING:
3002 			case HASH:
3003 			case HEAP:
3004 			case INBOUND:
3005 			case OUTBOUND:
3006 			case UNBOUNDED:
3007 			case INFINITE:
3008 			case LOGIN:
3009 			case MASKED:
3010 			case MAXDOP:
3011 			case MOVE:
3012 			case NOCHECK:
3013 			case OBJECT:
3014 			case ONLINE:
3015 			case OVER:
3016 			case PAGE:
3017 			case PAUSED:
3018 			case PERIOD:
3019 			case PERSISTED:
3020 			case PRECEDING:
3021 			case RANDOMIZED:
3022 			case RANGE:
3023 			case REBUILD:
3024 			case REPLICATE:
3025 			case REPLICATION:
3026 			case RESUMABLE:
3027 			case ROWGUIDCOL:
3028 			case SAVE:
3029 			case SELF:
3030 			case SPARSE:
3031 			case SWITCH:
3032 			case TRAN:
3033 			case TRANCOUNT:
3034 			case CONTROL:
3035 			case CONCAT:
3036 			case TAKE:
3037 			case OWNERSHIP:
3038 			case DEFINITION:
3039 			case APPLICATION:
3040 			case ASSEMBLY:
3041 			case SYMMETRIC:
3042 			case ASYMMETRIC:
3043 			case SERVER:
3044 			case RECEIVE:
3045 			case CHANGE:
3046 			case TRACE:
3047 			case TRACKING:
3048 			case RESOURCES:
3049 			case SETTINGS:
3050 			case STATE:
3051 			case AVAILABILITY:
3052 			case CREDENTIAL:
3053 			case ENDPOINT:
3054 			case EVENT:
3055 			case NOTIFICATION:
3056 			case LINKED:
3057 			case AUDIT:
3058 			case DDL:
3059 			case XML:
3060 			case IMPERSONATE:
3061 			case SECURABLES:
3062 			case AUTHENTICATE:
3063 			case EXTERNAL:
3064 			case ACCESS:
3065 			case ADMINISTER:
3066 			case BULK:
3067 			case OPERATIONS:
3068 			case UNSAFE:
3069 			case SHUTDOWN:
3070 			case SCOPED:
3071 			case CONFIGURATION:
3072 			case DATASPACE:
3073 			case SERVICE:
3074 			case CERTIFICATE:
3075 			case CONTRACT:
3076 			case ENCRYPTION:
3077 			case MASTER:
3078 			case DATA:
3079 			case SOURCE:
3080 			case FILE:
3081 			case FORMAT:
3082 			case LIBRARY:
3083 			case FULLTEXT:
3084 			case MASK:
3085 			case UNMASK:
3086 			case MESSAGE:
3087 			case REMOTE:
3088 			case BINDING:
3089 			case ROUTE:
3090 			case SECURITY:
3091 			case POLICY:
3092 			case AGGREGATE:
3093 			case QUEUE:
3094 			case RULE:
3095 			case SYNONYM:
3096 			case COLLECTION:
3097 			case SCRIPT:
3098 			case KILL:
3099 			case BACKUP:
3100 			case LOG:
3101 			case SHOWPLAN:
3102 			case SUBSCRIBE:
3103 			case QUERY:
3104 			case NOTIFICATIONS:
3105 			case CHECKPOINT:
3106 			case SEQUENCE:
3107 			case ABORT_AFTER_WAIT:
3108 			case ALLOW_PAGE_LOCKS:
3109 			case ALLOW_ROW_LOCKS:
3110 			case ALL_SPARSE_COLUMNS:
3111 			case BUCKET_COUNT:
3112 			case COLUMNSTORE_ARCHIVE:
3113 			case COLUMN_ENCRYPTION_KEY:
3114 			case COLUMN_SET:
3115 			case COMPRESSION_DELAY:
3116 			case DATABASE_DEAULT:
3117 			case DATA_COMPRESSION:
3118 			case DATA_CONSISTENCY_CHECK:
3119 			case ENCRYPTION_TYPE:
3120 			case SYSTEM_TIME:
3121 			case SYSTEM_VERSIONING:
3122 			case TEXTIMAGE_ON:
3123 			case WAIT_AT_LOW_PRIORITY:
3124 			case STATISTICS_INCREMENTAL:
3125 			case STATISTICS_NORECOMPUTE:
3126 			case ROUND_ROBIN:
3127 			case SCHEMA_AND_DATA:
3128 			case SCHEMA_ONLY:
3129 			case SORT_IN_TEMPDB:
3130 			case IGNORE_DUP_KEY:
3131 			case IMPLICIT_TRANSACTIONS:
3132 			case MAX_DURATION:
3133 			case MEMORY_OPTIMIZED:
3134 			case MIGRATION_STATE:
3135 			case PAD_INDEX:
3136 			case REMOTE_DATA_ARCHIVE:
3137 			case FILESTREAM_ON:
3138 			case FILETABLE_COLLATE_FILENAME:
3139 			case FILETABLE_DIRECTORY:
3140 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
3141 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
3142 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
3143 			case FILTER_PREDICATE:
3144 			case HISTORY_RETENTION_PERIOD:
3145 			case HISTORY_TABLE:
3146 			case LOCK_ESCALATION:
3147 			case DROP_EXISTING:
3148 			case ROW_NUMBER:
3149 			case FIRST:
3150 			case DATETIME2:
3151 			case OUTPUT:
3152 			case INSERTED:
3153 			case DELETED:
3154 			case FILENAME:
3155 			case MAXSIZE:
3156 			case FILEGROWTH:
3157 			case UNLIMITED:
3158 			case KB:
3159 			case MB:
3160 			case GB:
3161 			case TB:
3162 			case MEMORY_OPTIMIZED_DATA:
3163 			case FILEGROUP:
3164 			case NON_TRANSACTED_ACCESS:
3165 			case DB_CHAINING:
3166 			case TRUSTWORTHY:
3167 			case FORWARD_ONLY:
3168 			case KEYSET:
3169 			case FAST_FORWARD:
3170 			case SCROLL_LOCKS:
3171 			case OPTIMISTIC:
3172 			case TYPE_WARNING:
3173 			case SCHEMABINDING:
3174 			case CALLER:
3175 			case OWNER:
3176 			case SNAPSHOT:
3177 			case REPEATABLE:
3178 			case SERIALIZABLE:
3179 			case NATIVE_COMPILATION:
3180 			case VIEW_METADATA:
3181 			case INSTEAD:
3182 			case APPEND:
3183 			case INCREMENT:
3184 			case CACHE:
3185 			case MINVALUE:
3186 			case MAXVALUE:
3187 			case RESTART:
3188 			case LOB_COMPACTION:
3189 			case COMPRESS_ALL_ROW_GROUPS:
3190 			case REORGANIZE:
3191 			case RESUME:
3192 			case PAUSE:
3193 			case ABORT:
3194 			case ACCELERATED_DATABASE_RECOVERY:
3195 			case PERSISTENT_VERSION_STORE_FILEGROUP:
3196 			case IMMEDIATE:
3197 			case NO_WAIT:
3198 			case TARGET_RECOVERY_TIME:
3199 			case SECONDS:
3200 			case HONOR_BROKER_PRIORITY:
3201 			case ERROR_BROKER_CONVERSATIONS:
3202 			case NEW_BROKER:
3203 			case DISABLE_BROKER:
3204 			case ENABLE_BROKER:
3205 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
3206 			case READ_COMMITTED_SNAPSHOT:
3207 			case ALLOW_SNAPSHOT_ISOLATION:
3208 			case RECURSIVE_TRIGGERS:
3209 			case QUOTED_IDENTIFIER:
3210 			case NUMERIC_ROUNDABORT:
3211 			case CONCAT_NULL_YIELDS_NULL:
3212 			case COMPATIBILITY_LEVEL:
3213 			case ARITHABORT:
3214 			case ANSI_WARNINGS:
3215 			case ANSI_PADDING:
3216 			case ANSI_NULLS:
3217 			case ANSI_NULL_DEFAULT:
3218 			case PAGE_VERIFY:
3219 			case CHECKSUM:
3220 			case TORN_PAGE_DETECTION:
3221 			case BULK_LOGGED:
3222 			case RECOVERY:
3223 			case TOTAL_EXECUTION_CPU_TIME_MS:
3224 			case TOTAL_COMPILE_CPU_TIME_MS:
3225 			case STALE_CAPTURE_POLICY_THRESHOLD:
3226 			case EXECUTION_COUNT:
3227 			case QUERY_CAPTURE_POLICY:
3228 			case WAIT_STATS_CAPTURE_MODE:
3229 			case MAX_PLANS_PER_QUERY:
3230 			case QUERY_CAPTURE_MODE:
3231 			case SIZE_BASED_CLEANUP_MODE:
3232 			case INTERVAL_LENGTH_MINUTES:
3233 			case MAX_STORAGE_SIZE_MB:
3234 			case DATA_FLUSH_INTERVAL_SECONDS:
3235 			case CLEANUP_POLICY:
3236 			case CUSTOM:
3237 			case STALE_QUERY_THRESHOLD_DAYS:
3238 			case OPERATION_MODE:
3239 			case QUERY_STORE:
3240 			case CURSOR_DEFAULT:
3241 			case GLOBAL:
3242 			case CURSOR_CLOSE_ON_COMMIT:
3243 			case HOURS:
3244 			case CHANGE_RETENTION:
3245 			case AUTO_CLEANUP:
3246 			case CHANGE_TRACKING:
3247 			case AUTOMATIC_TUNING:
3248 			case FORCE_LAST_GOOD_PLAN:
3249 			case AUTO_UPDATE_STATISTICS_ASYNC:
3250 			case AUTO_UPDATE_STATISTICS:
3251 			case AUTO_SHRINK:
3252 			case AUTO_CREATE_STATISTICS:
3253 			case INCREMENTAL:
3254 			case AUTO_CLOSE:
3255 			case DATA_RETENTION:
3256 			case TEMPORAL_HISTORY_RETENTION:
3257 			case EDITION:
3258 			case MIXED_PAGE_ALLOCATION:
3259 			case DISABLED:
3260 			case ALLOWED:
3261 			case HADR:
3262 			case MULTI_USER:
3263 			case RESTRICTED_USER:
3264 			case SINGLE_USER:
3265 			case OFFLINE:
3266 			case EMERGENCY:
3267 			case SUSPEND:
3268 			case DATE_CORRELATION_OPTIMIZATION:
3269 			case ELASTIC_POOL:
3270 			case SERVICE_OBJECTIVE:
3271 			case DATABASE_NAME:
3272 			case ALLOW_CONNECTIONS:
3273 			case GEO:
3274 			case NAMED:
3275 			case DATEFIRST:
3276 			case BACKUP_STORAGE_REDUNDANCY:
3277 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
3278 			case SECONDARY:
3279 			case FAILOVER:
3280 			case DEFAULT_FULLTEXT_LANGUAGE:
3281 			case DEFAULT_LANGUAGE:
3282 			case INLINE:
3283 			case NESTED_TRIGGERS:
3284 			case TRANSFORM_NOISE_WORDS:
3285 			case TWO_DIGIT_YEAR_CUTOFF:
3286 			case PERSISTENT_LOG_BUFFER:
3287 			case DIRECTORY_NAME:
3288 			case DATEFORMAT:
3289 			case DELAYED_DURABILITY:
3290 			case AUTHORIZATION:
3291 			case TRANSFER:
3292 			case PROVIDER:
3293 			case SEARCH:
3294 			case MEMBER:
3295 				enterOuterAlt(_localctx, 2);
3296 				{
3297 				setState(1157);
3298 				unreservedWord();
3299 				}
3300 				break;
3301 			default:
3302 				throw new NoViableAltException(this);
3303 			}
3304 		}
3305 		catch (RecognitionException re) {
3306 			_localctx.exception = re;
3307 			_errHandler.reportError(this, re);
3308 			_errHandler.recover(this, re);
3309 		}
3310 		finally {
3311 			exitRule();
3312 		}
3313 		return _localctx;
3314 	}
3315 
3316 	public static class DelimitedIdentifierContext extends ParserRuleContext {
3317 		public TerminalNode DELIMITED_IDENTIFIER_() { return getToken(SQLServerStatementParser.DELIMITED_IDENTIFIER_, 0); }
3318 		public DelimitedIdentifierContext(ParserRuleContext parent, int invokingState) {
3319 			super(parent, invokingState);
3320 		}
3321 		@Override public int getRuleIndex() { return RULE_delimitedIdentifier; }
3322 		@Override
3323 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3324 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelimitedIdentifier(this);
3325 			else return visitor.visitChildren(this);
3326 		}
3327 	}
3328 
3329 	public final DelimitedIdentifierContext delimitedIdentifier() throws RecognitionException {
3330 		DelimitedIdentifierContext _localctx = new DelimitedIdentifierContext(_ctx, getState());
3331 		enterRule(_localctx, 46, RULE_delimitedIdentifier);
3332 		try {
3333 			enterOuterAlt(_localctx, 1);
3334 			{
3335 			setState(1160);
3336 			match(DELIMITED_IDENTIFIER_);
3337 			}
3338 		}
3339 		catch (RecognitionException re) {
3340 			_localctx.exception = re;
3341 			_errHandler.reportError(this, re);
3342 			_errHandler.recover(this, re);
3343 		}
3344 		finally {
3345 			exitRule();
3346 		}
3347 		return _localctx;
3348 	}
3349 
3350 	public static class UnreservedWordContext extends ParserRuleContext {
3351 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
3352 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
3353 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
3354 		public TerminalNode LIMIT() { return getToken(SQLServerStatementParser.LIMIT, 0); }
3355 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
3356 		public TerminalNode SAVEPOINT() { return getToken(SQLServerStatementParser.SAVEPOINT, 0); }
3357 		public TerminalNode BOOLEAN() { return getToken(SQLServerStatementParser.BOOLEAN, 0); }
3358 		public TerminalNode ARRAY() { return getToken(SQLServerStatementParser.ARRAY, 0); }
3359 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
3360 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
3361 		public TerminalNode QUARTER() { return getToken(SQLServerStatementParser.QUARTER, 0); }
3362 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
3363 		public TerminalNode MICROSECOND() { return getToken(SQLServerStatementParser.MICROSECOND, 0); }
3364 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
3365 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
3366 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
3367 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
3368 		public TerminalNode MOD() { return getToken(SQLServerStatementParser.MOD, 0); }
3369 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
3370 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
3371 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
3372 		public TerminalNode XOR() { return getToken(SQLServerStatementParser.XOR, 0); }
3373 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
3374 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
3375 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
3376 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
3377 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
3378 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
3379 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
3380 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
3381 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
3382 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
3383 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
3384 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
3385 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
3386 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
3387 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
3388 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
3389 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
3390 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
3391 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
3392 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
3393 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
3394 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
3395 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
3396 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
3397 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
3398 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
3399 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
3400 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
3401 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
3402 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
3403 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
3404 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
3405 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
3406 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
3407 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
3408 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
3409 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
3410 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
3411 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
3412 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
3413 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
3414 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
3415 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
3416 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
3417 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
3418 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
3419 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
3420 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
3421 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
3422 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
3423 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
3424 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
3425 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
3426 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
3427 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
3428 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
3429 		public TerminalNode TRANCOUNT() { return getToken(SQLServerStatementParser.TRANCOUNT, 0); }
3430 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
3431 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
3432 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
3433 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
3434 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
3435 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
3436 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
3437 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
3438 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
3439 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
3440 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
3441 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
3442 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
3443 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
3444 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
3445 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
3446 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
3447 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
3448 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
3449 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
3450 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
3451 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
3452 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
3453 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
3454 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
3455 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
3456 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
3457 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
3458 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
3459 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
3460 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
3461 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
3462 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
3463 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
3464 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
3465 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
3466 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
3467 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
3468 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
3469 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
3470 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
3471 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
3472 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
3473 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
3474 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
3475 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
3476 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
3477 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
3478 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
3479 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
3480 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
3481 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
3482 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
3483 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
3484 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
3485 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
3486 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
3487 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
3488 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
3489 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
3490 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
3491 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
3492 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
3493 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
3494 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
3495 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
3496 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
3497 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
3498 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
3499 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
3500 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
3501 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
3502 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
3503 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
3504 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
3505 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
3506 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
3507 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
3508 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
3509 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
3510 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
3511 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
3512 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
3513 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
3514 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
3515 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
3516 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
3517 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
3518 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
3519 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
3520 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
3521 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
3522 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
3523 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
3524 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
3525 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
3526 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
3527 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
3528 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
3529 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
3530 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
3531 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
3532 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
3533 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
3534 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
3535 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
3536 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
3537 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
3538 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
3539 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
3540 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
3541 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
3542 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
3543 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
3544 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
3545 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
3546 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
3547 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
3548 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
3549 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
3550 		public TerminalNode INSTANCE() { return getToken(SQLServerStatementParser.INSTANCE, 0); }
3551 		public TerminalNode DO() { return getToken(SQLServerStatementParser.DO, 0); }
3552 		public TerminalNode DEFINER() { return getToken(SQLServerStatementParser.DEFINER, 0); }
3553 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
3554 		public TerminalNode CASCADED() { return getToken(SQLServerStatementParser.CASCADED, 0); }
3555 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
3556 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
3557 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
3558 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
3559 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
3560 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
3561 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
3562 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
3563 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
3564 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
3565 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
3566 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
3567 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
3568 		public TerminalNode KB() { return getToken(SQLServerStatementParser.KB, 0); }
3569 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
3570 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
3571 		public TerminalNode TB() { return getToken(SQLServerStatementParser.TB, 0); }
3572 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
3573 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
3574 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
3575 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
3576 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
3577 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
3578 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
3579 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
3580 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
3581 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
3582 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
3583 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
3584 		public TerminalNode DATEPART() { return getToken(SQLServerStatementParser.DATEPART, 0); }
3585 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
3586 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
3587 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
3588 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
3589 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
3590 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
3591 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
3592 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
3593 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
3594 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
3595 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
3596 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
3597 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
3598 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
3599 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
3600 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
3601 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
3602 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
3603 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
3604 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
3605 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
3606 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
3607 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
3608 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
3609 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
3610 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
3611 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
3612 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
3613 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
3614 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
3615 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
3616 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
3617 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
3618 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
3619 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
3620 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
3621 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
3622 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
3623 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
3624 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
3625 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
3626 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
3627 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
3628 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
3629 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
3630 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
3631 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
3632 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
3633 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
3634 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
3635 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
3636 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
3637 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
3638 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
3639 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
3640 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
3641 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
3642 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
3643 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
3644 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
3645 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
3646 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
3647 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
3648 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
3649 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
3650 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
3651 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
3652 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
3653 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
3654 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
3655 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
3656 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
3657 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
3658 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
3659 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
3660 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
3661 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
3662 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
3663 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
3664 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
3665 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
3666 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
3667 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
3668 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
3669 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
3670 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
3671 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
3672 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
3673 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
3674 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
3675 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
3676 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
3677 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
3678 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
3679 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
3680 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
3681 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
3682 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
3683 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
3684 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
3685 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
3686 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
3687 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
3688 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
3689 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
3690 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
3691 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
3692 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
3693 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
3694 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
3695 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
3696 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
3697 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
3698 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
3699 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
3700 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
3701 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
3702 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
3703 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
3704 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
3705 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
3706 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
3707 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
3708 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
3709 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
3710 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
3711 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
3712 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
3713 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
3714 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
3715 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
3716 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
3717 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
3718 		public TerminalNode SECOND() { return getToken(SQLServerStatementParser.SECOND, 0); }
3719 		public TerminalNode PRECISION() { return getToken(SQLServerStatementParser.PRECISION, 0); }
3720 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
3721 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
3722 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
3723 		public TerminalNode SUBSTRING() { return getToken(SQLServerStatementParser.SUBSTRING, 0); }
3724 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
3725 		public UnreservedWordContext(ParserRuleContext parent, int invokingState) {
3726 			super(parent, invokingState);
3727 		}
3728 		@Override public int getRuleIndex() { return RULE_unreservedWord; }
3729 		@Override
3730 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3731 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnreservedWord(this);
3732 			else return visitor.visitChildren(this);
3733 		}
3734 	}
3735 
3736 	public final UnreservedWordContext unreservedWord() throws RecognitionException {
3737 		UnreservedWordContext _localctx = new UnreservedWordContext(_ctx, getState());
3738 		enterRule(_localctx, 48, RULE_unreservedWord);
3739 		int _la;
3740 		try {
3741 			enterOuterAlt(_localctx, 1);
3742 			{
3743 			setState(1162);
3744 			_la = _input.LA(1);
3745 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CAST - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (DATE - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)) | (1L << (BLOCKERS - 203)) | (1L << (CLUSTERED - 203)) | (1L << (NONCLUSTERED - 203)) | (1L << (COLUMNSTORE - 203)) | (1L << (CONTENT - 203)) | (1L << (YEARS - 203)) | (1L << (MONTHS - 203)) | (1L << (WEEKS - 203)) | (1L << (DAYS - 203)) | (1L << (MINUTES - 203)) | (1L << (DENY - 203)) | (1L << (DETERMINISTIC - 203)) | (1L << (DISTRIBUTION - 203)) | (1L << (DOCUMENT - 203)) | (1L << (DURABILITY - 203)) | (1L << (ENCRYPTED - 203)) | (1L << (FILESTREAM - 203)) | (1L << (FILETABLE - 203)) | (1L << (FILLFACTOR - 203)) | (1L << (FOLLOWING - 203)) | (1L << (HASH - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)) | (1L << (CONTROL - 267)) | (1L << (CONCAT - 267)) | (1L << (TAKE - 267)) | (1L << (OWNERSHIP - 267)) | (1L << (DEFINITION - 267)) | (1L << (APPLICATION - 267)) | (1L << (ASSEMBLY - 267)) | (1L << (SYMMETRIC - 267)) | (1L << (ASYMMETRIC - 267)) | (1L << (SERVER - 267)) | (1L << (RECEIVE - 267)) | (1L << (CHANGE - 267)) | (1L << (TRACE - 267)) | (1L << (TRACKING - 267)) | (1L << (RESOURCES - 267)) | (1L << (SETTINGS - 267)) | (1L << (STATE - 267)) | (1L << (AVAILABILITY - 267)) | (1L << (CREDENTIAL - 267)) | (1L << (ENDPOINT - 267)) | (1L << (EVENT - 267)) | (1L << (NOTIFICATION - 267)) | (1L << (LINKED - 267)) | (1L << (AUDIT - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)) | (1L << (KILL - 331)) | (1L << (BACKUP - 331)) | (1L << (LOG - 331)) | (1L << (SHOWPLAN - 331)) | (1L << (SUBSCRIBE - 331)) | (1L << (QUERY - 331)) | (1L << (NOTIFICATIONS - 331)) | (1L << (CHECKPOINT - 331)) | (1L << (SEQUENCE - 331)) | (1L << (ABORT_AFTER_WAIT - 331)) | (1L << (ALLOW_PAGE_LOCKS - 331)) | (1L << (ALLOW_ROW_LOCKS - 331)) | (1L << (ALL_SPARSE_COLUMNS - 331)) | (1L << (BUCKET_COUNT - 331)) | (1L << (COLUMNSTORE_ARCHIVE - 331)) | (1L << (COLUMN_ENCRYPTION_KEY - 331)) | (1L << (COLUMN_SET - 331)) | (1L << (COMPRESSION_DELAY - 331)) | (1L << (DATABASE_DEAULT - 331)) | (1L << (DATA_COMPRESSION - 331)) | (1L << (DATA_CONSISTENCY_CHECK - 331)) | (1L << (ENCRYPTION_TYPE - 331)) | (1L << (SYSTEM_TIME - 331)) | (1L << (SYSTEM_VERSIONING - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)) | (1L << (OUTPUT - 395)) | (1L << (INSERTED - 395)) | (1L << (DELETED - 395)))) != 0) || ((((_la - 480)) & ~0x3f) == 0 && ((1L << (_la - 480)) & ((1L << (FILENAME - 480)) | (1L << (MAXSIZE - 480)) | (1L << (FILEGROWTH - 480)) | (1L << (UNLIMITED - 480)) | (1L << (KB - 480)) | (1L << (MB - 480)) | (1L << (GB - 480)) | (1L << (TB - 480)) | (1L << (MEMORY_OPTIMIZED_DATA - 480)) | (1L << (FILEGROUP - 480)) | (1L << (NON_TRANSACTED_ACCESS - 480)) | (1L << (DB_CHAINING - 480)) | (1L << (TRUSTWORTHY - 480)) | (1L << (FORWARD_ONLY - 480)) | (1L << (KEYSET - 480)) | (1L << (FAST_FORWARD - 480)) | (1L << (SCROLL_LOCKS - 480)) | (1L << (OPTIMISTIC - 480)) | (1L << (TYPE_WARNING - 480)) | (1L << (SCHEMABINDING - 480)) | (1L << (CALLER - 480)) | (1L << (OWNER - 480)) | (1L << (SNAPSHOT - 480)) | (1L << (REPEATABLE - 480)) | (1L << (SERIALIZABLE - 480)) | (1L << (NATIVE_COMPILATION - 480)) | (1L << (VIEW_METADATA - 480)) | (1L << (INSTEAD - 480)) | (1L << (APPEND - 480)) | (1L << (INCREMENT - 480)) | (1L << (CACHE - 480)) | (1L << (MINVALUE - 480)) | (1L << (MAXVALUE - 480)) | (1L << (RESTART - 480)) | (1L << (LOB_COMPACTION - 480)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 480)) | (1L << (REORGANIZE - 480)) | (1L << (RESUME - 480)) | (1L << (PAUSE - 480)) | (1L << (ABORT - 480)))) != 0) || ((((_la - 546)) & ~0x3f) == 0 && ((1L << (_la - 546)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 546)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 546)) | (1L << (IMMEDIATE - 546)) | (1L << (NO_WAIT - 546)) | (1L << (TARGET_RECOVERY_TIME - 546)) | (1L << (SECONDS - 546)) | (1L << (HONOR_BROKER_PRIORITY - 546)) | (1L << (ERROR_BROKER_CONVERSATIONS - 546)) | (1L << (NEW_BROKER - 546)) | (1L << (DISABLE_BROKER - 546)) | (1L << (ENABLE_BROKER - 546)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 546)) | (1L << (READ_COMMITTED_SNAPSHOT - 546)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 546)) | (1L << (RECURSIVE_TRIGGERS - 546)) | (1L << (QUOTED_IDENTIFIER - 546)) | (1L << (NUMERIC_ROUNDABORT - 546)) | (1L << (CONCAT_NULL_YIELDS_NULL - 546)) | (1L << (COMPATIBILITY_LEVEL - 546)) | (1L << (ARITHABORT - 546)) | (1L << (ANSI_WARNINGS - 546)) | (1L << (ANSI_PADDING - 546)) | (1L << (ANSI_NULLS - 546)) | (1L << (ANSI_NULL_DEFAULT - 546)) | (1L << (PAGE_VERIFY - 546)) | (1L << (CHECKSUM - 546)) | (1L << (TORN_PAGE_DETECTION - 546)) | (1L << (BULK_LOGGED - 546)) | (1L << (RECOVERY - 546)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 546)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 546)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 546)) | (1L << (EXECUTION_COUNT - 546)) | (1L << (QUERY_CAPTURE_POLICY - 546)) | (1L << (WAIT_STATS_CAPTURE_MODE - 546)) | (1L << (MAX_PLANS_PER_QUERY - 546)) | (1L << (QUERY_CAPTURE_MODE - 546)) | (1L << (SIZE_BASED_CLEANUP_MODE - 546)) | (1L << (INTERVAL_LENGTH_MINUTES - 546)) | (1L << (MAX_STORAGE_SIZE_MB - 546)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 546)) | (1L << (CLEANUP_POLICY - 546)) | (1L << (CUSTOM - 546)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 546)) | (1L << (OPERATION_MODE - 546)) | (1L << (QUERY_STORE - 546)) | (1L << (CURSOR_DEFAULT - 546)) | (1L << (GLOBAL - 546)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 546)) | (1L << (HOURS - 546)) | (1L << (CHANGE_RETENTION - 546)) | (1L << (AUTO_CLEANUP - 546)) | (1L << (CHANGE_TRACKING - 546)) | (1L << (AUTOMATIC_TUNING - 546)) | (1L << (FORCE_LAST_GOOD_PLAN - 546)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 546)) | (1L << (AUTO_UPDATE_STATISTICS - 546)) | (1L << (AUTO_SHRINK - 546)) | (1L << (AUTO_CREATE_STATISTICS - 546)) | (1L << (INCREMENTAL - 546)) | (1L << (AUTO_CLOSE - 546)) | (1L << (DATA_RETENTION - 546)) | (1L << (TEMPORAL_HISTORY_RETENTION - 546)) | (1L << (EDITION - 546)))) != 0) || ((((_la - 610)) & ~0x3f) == 0 && ((1L << (_la - 610)) & ((1L << (MIXED_PAGE_ALLOCATION - 610)) | (1L << (DISABLED - 610)) | (1L << (ALLOWED - 610)) | (1L << (HADR - 610)) | (1L << (MULTI_USER - 610)) | (1L << (RESTRICTED_USER - 610)) | (1L << (SINGLE_USER - 610)) | (1L << (OFFLINE - 610)) | (1L << (EMERGENCY - 610)) | (1L << (SUSPEND - 610)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 610)) | (1L << (ELASTIC_POOL - 610)) | (1L << (SERVICE_OBJECTIVE - 610)) | (1L << (DATABASE_NAME - 610)) | (1L << (ALLOW_CONNECTIONS - 610)) | (1L << (GEO - 610)) | (1L << (NAMED - 610)) | (1L << (DATEFIRST - 610)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 610)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 610)) | (1L << (SECONDARY - 610)) | (1L << (FAILOVER - 610)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 610)) | (1L << (DEFAULT_LANGUAGE - 610)) | (1L << (INLINE - 610)) | (1L << (NESTED_TRIGGERS - 610)) | (1L << (TRANSFORM_NOISE_WORDS - 610)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 610)) | (1L << (PERSISTENT_LOG_BUFFER - 610)) | (1L << (DIRECTORY_NAME - 610)) | (1L << (DATEFORMAT - 610)) | (1L << (DELAYED_DURABILITY - 610)) | (1L << (AUTHORIZATION - 610)) | (1L << (TRANSFER - 610)) | (1L << (PROVIDER - 610)) | (1L << (SEARCH - 610)) | (1L << (MEMBER - 610)))) != 0)) ) {
3746 			_errHandler.recoverInline(this);
3747 			}
3748 			else {
3749 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
3750 				_errHandler.reportMatch(this);
3751 				consume();
3752 			}
3753 			}
3754 		}
3755 		catch (RecognitionException re) {
3756 			_localctx.exception = re;
3757 			_errHandler.reportError(this, re);
3758 			_errHandler.recover(this, re);
3759 		}
3760 		finally {
3761 			exitRule();
3762 		}
3763 		return _localctx;
3764 	}
3765 
3766 	public static class DatabaseNameContext extends ParserRuleContext {
3767 		public IdentifierContext identifier() {
3768 			return getRuleContext(IdentifierContext.class,0);
3769 		}
3770 		public DatabaseNameContext(ParserRuleContext parent, int invokingState) {
3771 			super(parent, invokingState);
3772 		}
3773 		@Override public int getRuleIndex() { return RULE_databaseName; }
3774 		@Override
3775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseName(this);
3777 			else return visitor.visitChildren(this);
3778 		}
3779 	}
3780 
3781 	public final DatabaseNameContext databaseName() throws RecognitionException {
3782 		DatabaseNameContext _localctx = new DatabaseNameContext(_ctx, getState());
3783 		enterRule(_localctx, 50, RULE_databaseName);
3784 		try {
3785 			enterOuterAlt(_localctx, 1);
3786 			{
3787 			setState(1164);
3788 			identifier();
3789 			}
3790 		}
3791 		catch (RecognitionException re) {
3792 			_localctx.exception = re;
3793 			_errHandler.reportError(this, re);
3794 			_errHandler.recover(this, re);
3795 		}
3796 		finally {
3797 			exitRule();
3798 		}
3799 		return _localctx;
3800 	}
3801 
3802 	public static class SchemaNameContext extends ParserRuleContext {
3803 		public IdentifierContext identifier() {
3804 			return getRuleContext(IdentifierContext.class,0);
3805 		}
3806 		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
3807 			super(parent, invokingState);
3808 		}
3809 		@Override public int getRuleIndex() { return RULE_schemaName; }
3810 		@Override
3811 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3812 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaName(this);
3813 			else return visitor.visitChildren(this);
3814 		}
3815 	}
3816 
3817 	public final SchemaNameContext schemaName() throws RecognitionException {
3818 		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
3819 		enterRule(_localctx, 52, RULE_schemaName);
3820 		try {
3821 			enterOuterAlt(_localctx, 1);
3822 			{
3823 			setState(1166);
3824 			identifier();
3825 			}
3826 		}
3827 		catch (RecognitionException re) {
3828 			_localctx.exception = re;
3829 			_errHandler.reportError(this, re);
3830 			_errHandler.recover(this, re);
3831 		}
3832 		finally {
3833 			exitRule();
3834 		}
3835 		return _localctx;
3836 	}
3837 
3838 	public static class FunctionNameContext extends ParserRuleContext {
3839 		public NameContext name() {
3840 			return getRuleContext(NameContext.class,0);
3841 		}
3842 		public OwnerContext owner() {
3843 			return getRuleContext(OwnerContext.class,0);
3844 		}
3845 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3846 		public FunctionNameContext(ParserRuleContext parent, int invokingState) {
3847 			super(parent, invokingState);
3848 		}
3849 		@Override public int getRuleIndex() { return RULE_functionName; }
3850 		@Override
3851 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3852 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionName(this);
3853 			else return visitor.visitChildren(this);
3854 		}
3855 	}
3856 
3857 	public final FunctionNameContext functionName() throws RecognitionException {
3858 		FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
3859 		enterRule(_localctx, 54, RULE_functionName);
3860 		try {
3861 			enterOuterAlt(_localctx, 1);
3862 			{
3863 			setState(1171);
3864 			_errHandler.sync(this);
3865 			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
3866 			case 1:
3867 				{
3868 				setState(1168);
3869 				owner();
3870 				setState(1169);
3871 				match(DOT_);
3872 				}
3873 				break;
3874 			}
3875 			setState(1173);
3876 			name();
3877 			}
3878 		}
3879 		catch (RecognitionException re) {
3880 			_localctx.exception = re;
3881 			_errHandler.reportError(this, re);
3882 			_errHandler.recover(this, re);
3883 		}
3884 		finally {
3885 			exitRule();
3886 		}
3887 		return _localctx;
3888 	}
3889 
3890 	public static class ProcedureNameContext extends ParserRuleContext {
3891 		public NameContext name() {
3892 			return getRuleContext(NameContext.class,0);
3893 		}
3894 		public OwnerContext owner() {
3895 			return getRuleContext(OwnerContext.class,0);
3896 		}
3897 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3898 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
3899 		public NumberLiteralsContext numberLiterals() {
3900 			return getRuleContext(NumberLiteralsContext.class,0);
3901 		}
3902 		public ProcedureNameContext(ParserRuleContext parent, int invokingState) {
3903 			super(parent, invokingState);
3904 		}
3905 		@Override public int getRuleIndex() { return RULE_procedureName; }
3906 		@Override
3907 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3908 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcedureName(this);
3909 			else return visitor.visitChildren(this);
3910 		}
3911 	}
3912 
3913 	public final ProcedureNameContext procedureName() throws RecognitionException {
3914 		ProcedureNameContext _localctx = new ProcedureNameContext(_ctx, getState());
3915 		enterRule(_localctx, 56, RULE_procedureName);
3916 		try {
3917 			enterOuterAlt(_localctx, 1);
3918 			{
3919 			setState(1178);
3920 			_errHandler.sync(this);
3921 			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
3922 			case 1:
3923 				{
3924 				setState(1175);
3925 				owner();
3926 				setState(1176);
3927 				match(DOT_);
3928 				}
3929 				break;
3930 			}
3931 			setState(1180);
3932 			name();
3933 			setState(1183);
3934 			_errHandler.sync(this);
3935 			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
3936 			case 1:
3937 				{
3938 				setState(1181);
3939 				match(SEMI_);
3940 				setState(1182);
3941 				numberLiterals();
3942 				}
3943 				break;
3944 			}
3945 			}
3946 		}
3947 		catch (RecognitionException re) {
3948 			_localctx.exception = re;
3949 			_errHandler.reportError(this, re);
3950 			_errHandler.recover(this, re);
3951 		}
3952 		finally {
3953 			exitRule();
3954 		}
3955 		return _localctx;
3956 	}
3957 
3958 	public static class ViewNameContext extends ParserRuleContext {
3959 		public NameContext name() {
3960 			return getRuleContext(NameContext.class,0);
3961 		}
3962 		public OwnerContext owner() {
3963 			return getRuleContext(OwnerContext.class,0);
3964 		}
3965 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3966 		public ViewNameContext(ParserRuleContext parent, int invokingState) {
3967 			super(parent, invokingState);
3968 		}
3969 		@Override public int getRuleIndex() { return RULE_viewName; }
3970 		@Override
3971 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3972 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewName(this);
3973 			else return visitor.visitChildren(this);
3974 		}
3975 	}
3976 
3977 	public final ViewNameContext viewName() throws RecognitionException {
3978 		ViewNameContext _localctx = new ViewNameContext(_ctx, getState());
3979 		enterRule(_localctx, 58, RULE_viewName);
3980 		try {
3981 			enterOuterAlt(_localctx, 1);
3982 			{
3983 			setState(1188);
3984 			_errHandler.sync(this);
3985 			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
3986 			case 1:
3987 				{
3988 				setState(1185);
3989 				owner();
3990 				setState(1186);
3991 				match(DOT_);
3992 				}
3993 				break;
3994 			}
3995 			setState(1190);
3996 			name();
3997 			}
3998 		}
3999 		catch (RecognitionException re) {
4000 			_localctx.exception = re;
4001 			_errHandler.reportError(this, re);
4002 			_errHandler.recover(this, re);
4003 		}
4004 		finally {
4005 			exitRule();
4006 		}
4007 		return _localctx;
4008 	}
4009 
4010 	public static class TriggerNameContext extends ParserRuleContext {
4011 		public NameContext name() {
4012 			return getRuleContext(NameContext.class,0);
4013 		}
4014 		public SchemaNameContext schemaName() {
4015 			return getRuleContext(SchemaNameContext.class,0);
4016 		}
4017 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4018 		public TriggerNameContext(ParserRuleContext parent, int invokingState) {
4019 			super(parent, invokingState);
4020 		}
4021 		@Override public int getRuleIndex() { return RULE_triggerName; }
4022 		@Override
4023 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4024 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerName(this);
4025 			else return visitor.visitChildren(this);
4026 		}
4027 	}
4028 
4029 	public final TriggerNameContext triggerName() throws RecognitionException {
4030 		TriggerNameContext _localctx = new TriggerNameContext(_ctx, getState());
4031 		enterRule(_localctx, 60, RULE_triggerName);
4032 		try {
4033 			enterOuterAlt(_localctx, 1);
4034 			{
4035 			setState(1195);
4036 			_errHandler.sync(this);
4037 			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
4038 			case 1:
4039 				{
4040 				setState(1192);
4041 				schemaName();
4042 				setState(1193);
4043 				match(DOT_);
4044 				}
4045 				break;
4046 			}
4047 			setState(1197);
4048 			name();
4049 			}
4050 		}
4051 		catch (RecognitionException re) {
4052 			_localctx.exception = re;
4053 			_errHandler.reportError(this, re);
4054 			_errHandler.recover(this, re);
4055 		}
4056 		finally {
4057 			exitRule();
4058 		}
4059 		return _localctx;
4060 	}
4061 
4062 	public static class SequenceNameContext extends ParserRuleContext {
4063 		public NameContext name() {
4064 			return getRuleContext(NameContext.class,0);
4065 		}
4066 		public SchemaNameContext schemaName() {
4067 			return getRuleContext(SchemaNameContext.class,0);
4068 		}
4069 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4070 		public SequenceNameContext(ParserRuleContext parent, int invokingState) {
4071 			super(parent, invokingState);
4072 		}
4073 		@Override public int getRuleIndex() { return RULE_sequenceName; }
4074 		@Override
4075 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4076 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSequenceName(this);
4077 			else return visitor.visitChildren(this);
4078 		}
4079 	}
4080 
4081 	public final SequenceNameContext sequenceName() throws RecognitionException {
4082 		SequenceNameContext _localctx = new SequenceNameContext(_ctx, getState());
4083 		enterRule(_localctx, 62, RULE_sequenceName);
4084 		try {
4085 			enterOuterAlt(_localctx, 1);
4086 			{
4087 			setState(1202);
4088 			_errHandler.sync(this);
4089 			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
4090 			case 1:
4091 				{
4092 				setState(1199);
4093 				schemaName();
4094 				setState(1200);
4095 				match(DOT_);
4096 				}
4097 				break;
4098 			}
4099 			setState(1204);
4100 			name();
4101 			}
4102 		}
4103 		catch (RecognitionException re) {
4104 			_localctx.exception = re;
4105 			_errHandler.reportError(this, re);
4106 			_errHandler.recover(this, re);
4107 		}
4108 		finally {
4109 			exitRule();
4110 		}
4111 		return _localctx;
4112 	}
4113 
4114 	public static class TableNameContext extends ParserRuleContext {
4115 		public NameContext name() {
4116 			return getRuleContext(NameContext.class,0);
4117 		}
4118 		public DatabaseNameContext databaseName() {
4119 			return getRuleContext(DatabaseNameContext.class,0);
4120 		}
4121 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4122 		public TerminalNode DOT_(int i) {
4123 			return getToken(SQLServerStatementParser.DOT_, i);
4124 		}
4125 		public OwnerContext owner() {
4126 			return getRuleContext(OwnerContext.class,0);
4127 		}
4128 		public TableNameContext(ParserRuleContext parent, int invokingState) {
4129 			super(parent, invokingState);
4130 		}
4131 		@Override public int getRuleIndex() { return RULE_tableName; }
4132 		@Override
4133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableName(this);
4135 			else return visitor.visitChildren(this);
4136 		}
4137 	}
4138 
4139 	public final TableNameContext tableName() throws RecognitionException {
4140 		TableNameContext _localctx = new TableNameContext(_ctx, getState());
4141 		enterRule(_localctx, 64, RULE_tableName);
4142 		try {
4143 			enterOuterAlt(_localctx, 1);
4144 			{
4145 			setState(1218);
4146 			_errHandler.sync(this);
4147 			switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
4148 			case 1:
4149 				{
4150 				setState(1206);
4151 				databaseName();
4152 				setState(1207);
4153 				match(DOT_);
4154 				setState(1211);
4155 				_errHandler.sync(this);
4156 				switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
4157 				case 1:
4158 					{
4159 					setState(1208);
4160 					owner();
4161 					setState(1209);
4162 					match(DOT_);
4163 					}
4164 					break;
4165 				}
4166 				}
4167 				break;
4168 			case 2:
4169 				{
4170 				setState(1216);
4171 				_errHandler.sync(this);
4172 				switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
4173 				case 1:
4174 					{
4175 					setState(1213);
4176 					owner();
4177 					setState(1214);
4178 					match(DOT_);
4179 					}
4180 					break;
4181 				}
4182 				}
4183 				break;
4184 			}
4185 			setState(1220);
4186 			name();
4187 			}
4188 		}
4189 		catch (RecognitionException re) {
4190 			_localctx.exception = re;
4191 			_errHandler.reportError(this, re);
4192 			_errHandler.recover(this, re);
4193 		}
4194 		finally {
4195 			exitRule();
4196 		}
4197 		return _localctx;
4198 	}
4199 
4200 	public static class QueueNameContext extends ParserRuleContext {
4201 		public NameContext name() {
4202 			return getRuleContext(NameContext.class,0);
4203 		}
4204 		public SchemaNameContext schemaName() {
4205 			return getRuleContext(SchemaNameContext.class,0);
4206 		}
4207 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4208 		public QueueNameContext(ParserRuleContext parent, int invokingState) {
4209 			super(parent, invokingState);
4210 		}
4211 		@Override public int getRuleIndex() { return RULE_queueName; }
4212 		@Override
4213 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4214 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueueName(this);
4215 			else return visitor.visitChildren(this);
4216 		}
4217 	}
4218 
4219 	public final QueueNameContext queueName() throws RecognitionException {
4220 		QueueNameContext _localctx = new QueueNameContext(_ctx, getState());
4221 		enterRule(_localctx, 66, RULE_queueName);
4222 		try {
4223 			enterOuterAlt(_localctx, 1);
4224 			{
4225 			setState(1225);
4226 			_errHandler.sync(this);
4227 			switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
4228 			case 1:
4229 				{
4230 				setState(1222);
4231 				schemaName();
4232 				setState(1223);
4233 				match(DOT_);
4234 				}
4235 				break;
4236 			}
4237 			setState(1227);
4238 			name();
4239 			}
4240 		}
4241 		catch (RecognitionException re) {
4242 			_localctx.exception = re;
4243 			_errHandler.reportError(this, re);
4244 			_errHandler.recover(this, re);
4245 		}
4246 		finally {
4247 			exitRule();
4248 		}
4249 		return _localctx;
4250 	}
4251 
4252 	public static class ContractNameContext extends ParserRuleContext {
4253 		public NameContext name() {
4254 			return getRuleContext(NameContext.class,0);
4255 		}
4256 		public ContractNameContext(ParserRuleContext parent, int invokingState) {
4257 			super(parent, invokingState);
4258 		}
4259 		@Override public int getRuleIndex() { return RULE_contractName; }
4260 		@Override
4261 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4262 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitContractName(this);
4263 			else return visitor.visitChildren(this);
4264 		}
4265 	}
4266 
4267 	public final ContractNameContext contractName() throws RecognitionException {
4268 		ContractNameContext _localctx = new ContractNameContext(_ctx, getState());
4269 		enterRule(_localctx, 68, RULE_contractName);
4270 		try {
4271 			enterOuterAlt(_localctx, 1);
4272 			{
4273 			setState(1229);
4274 			name();
4275 			}
4276 		}
4277 		catch (RecognitionException re) {
4278 			_localctx.exception = re;
4279 			_errHandler.reportError(this, re);
4280 			_errHandler.recover(this, re);
4281 		}
4282 		finally {
4283 			exitRule();
4284 		}
4285 		return _localctx;
4286 	}
4287 
4288 	public static class ServiceNameContext extends ParserRuleContext {
4289 		public NameContext name() {
4290 			return getRuleContext(NameContext.class,0);
4291 		}
4292 		public ServiceNameContext(ParserRuleContext parent, int invokingState) {
4293 			super(parent, invokingState);
4294 		}
4295 		@Override public int getRuleIndex() { return RULE_serviceName; }
4296 		@Override
4297 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4298 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceName(this);
4299 			else return visitor.visitChildren(this);
4300 		}
4301 	}
4302 
4303 	public final ServiceNameContext serviceName() throws RecognitionException {
4304 		ServiceNameContext _localctx = new ServiceNameContext(_ctx, getState());
4305 		enterRule(_localctx, 70, RULE_serviceName);
4306 		try {
4307 			enterOuterAlt(_localctx, 1);
4308 			{
4309 			setState(1231);
4310 			name();
4311 			}
4312 		}
4313 		catch (RecognitionException re) {
4314 			_localctx.exception = re;
4315 			_errHandler.reportError(this, re);
4316 			_errHandler.recover(this, re);
4317 		}
4318 		finally {
4319 			exitRule();
4320 		}
4321 		return _localctx;
4322 	}
4323 
4324 	public static class ColumnNameContext extends ParserRuleContext {
4325 		public NameContext name() {
4326 			return getRuleContext(NameContext.class,0);
4327 		}
4328 		public ScriptVariableNameContext scriptVariableName() {
4329 			return getRuleContext(ScriptVariableNameContext.class,0);
4330 		}
4331 		public OwnerContext owner() {
4332 			return getRuleContext(OwnerContext.class,0);
4333 		}
4334 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4335 		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
4336 			super(parent, invokingState);
4337 		}
4338 		@Override public int getRuleIndex() { return RULE_columnName; }
4339 		@Override
4340 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4341 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnName(this);
4342 			else return visitor.visitChildren(this);
4343 		}
4344 	}
4345 
4346 	public final ColumnNameContext columnName() throws RecognitionException {
4347 		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
4348 		enterRule(_localctx, 72, RULE_columnName);
4349 		try {
4350 			enterOuterAlt(_localctx, 1);
4351 			{
4352 			setState(1236);
4353 			_errHandler.sync(this);
4354 			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
4355 			case 1:
4356 				{
4357 				setState(1233);
4358 				owner();
4359 				setState(1234);
4360 				match(DOT_);
4361 				}
4362 				break;
4363 			}
4364 			setState(1240);
4365 			_errHandler.sync(this);
4366 			switch (_input.LA(1)) {
4367 			case TRUNCATE:
4368 			case SCHEMA:
4369 			case COLUMNS:
4370 			case PRECISION:
4371 			case FUNCTION:
4372 			case TRIGGER:
4373 			case CAST:
4374 			case SUBSTRING:
4375 			case OFF:
4376 			case GROUP:
4377 			case LIMIT:
4378 			case OFFSET:
4379 			case SAVEPOINT:
4380 			case BOOLEAN:
4381 			case ARRAY:
4382 			case DATE:
4383 			case LOCALTIME:
4384 			case LOCALTIMESTAMP:
4385 			case QUARTER:
4386 			case WEEK:
4387 			case DAY:
4388 			case SECOND:
4389 			case MICROSECOND:
4390 			case MAX:
4391 			case MIN:
4392 			case SUM:
4393 			case COUNT:
4394 			case AVG:
4395 			case ENABLE:
4396 			case DISABLE:
4397 			case INSTANCE:
4398 			case DO:
4399 			case DEFINER:
4400 			case SQL:
4401 			case CASCADED:
4402 			case LOCAL:
4403 			case NEXT:
4404 			case NAME:
4405 			case INTEGER:
4406 			case TYPE:
4407 			case TEXT:
4408 			case VIEWS:
4409 			case READ_ONLY:
4410 			case DATABASE:
4411 			case RETURNS:
4412 			case DATEPART:
4413 			case PASSWORD:
4414 			case BINARY:
4415 			case HIDDEN_:
4416 			case MOD:
4417 			case PARTITION:
4418 			case PARTITIONS:
4419 			case TOP:
4420 			case ROW:
4421 			case ROWS:
4422 			case XOR:
4423 			case ALWAYS:
4424 			case ROLE:
4425 			case START:
4426 			case ALGORITHM:
4427 			case AUTO:
4428 			case BLOCKERS:
4429 			case CLUSTERED:
4430 			case NONCLUSTERED:
4431 			case COLUMNSTORE:
4432 			case CONTENT:
4433 			case YEARS:
4434 			case MONTHS:
4435 			case WEEKS:
4436 			case DAYS:
4437 			case MINUTES:
4438 			case DENY:
4439 			case DETERMINISTIC:
4440 			case DISTRIBUTION:
4441 			case DOCUMENT:
4442 			case DURABILITY:
4443 			case ENCRYPTED:
4444 			case FILESTREAM:
4445 			case FILETABLE:
4446 			case FILLFACTOR:
4447 			case FOLLOWING:
4448 			case HASH:
4449 			case HEAP:
4450 			case INBOUND:
4451 			case OUTBOUND:
4452 			case UNBOUNDED:
4453 			case INFINITE:
4454 			case LOGIN:
4455 			case MASKED:
4456 			case MAXDOP:
4457 			case MOVE:
4458 			case NOCHECK:
4459 			case OBJECT:
4460 			case ONLINE:
4461 			case OVER:
4462 			case PAGE:
4463 			case PAUSED:
4464 			case PERIOD:
4465 			case PERSISTED:
4466 			case PRECEDING:
4467 			case RANDOMIZED:
4468 			case RANGE:
4469 			case REBUILD:
4470 			case REPLICATE:
4471 			case REPLICATION:
4472 			case RESUMABLE:
4473 			case ROWGUIDCOL:
4474 			case SAVE:
4475 			case SELF:
4476 			case SPARSE:
4477 			case SWITCH:
4478 			case TRAN:
4479 			case TRANCOUNT:
4480 			case CONTROL:
4481 			case CONCAT:
4482 			case TAKE:
4483 			case OWNERSHIP:
4484 			case DEFINITION:
4485 			case APPLICATION:
4486 			case ASSEMBLY:
4487 			case SYMMETRIC:
4488 			case ASYMMETRIC:
4489 			case SERVER:
4490 			case RECEIVE:
4491 			case CHANGE:
4492 			case TRACE:
4493 			case TRACKING:
4494 			case RESOURCES:
4495 			case SETTINGS:
4496 			case STATE:
4497 			case AVAILABILITY:
4498 			case CREDENTIAL:
4499 			case ENDPOINT:
4500 			case EVENT:
4501 			case NOTIFICATION:
4502 			case LINKED:
4503 			case AUDIT:
4504 			case DDL:
4505 			case XML:
4506 			case IMPERSONATE:
4507 			case SECURABLES:
4508 			case AUTHENTICATE:
4509 			case EXTERNAL:
4510 			case ACCESS:
4511 			case ADMINISTER:
4512 			case BULK:
4513 			case OPERATIONS:
4514 			case UNSAFE:
4515 			case SHUTDOWN:
4516 			case SCOPED:
4517 			case CONFIGURATION:
4518 			case DATASPACE:
4519 			case SERVICE:
4520 			case CERTIFICATE:
4521 			case CONTRACT:
4522 			case ENCRYPTION:
4523 			case MASTER:
4524 			case DATA:
4525 			case SOURCE:
4526 			case FILE:
4527 			case FORMAT:
4528 			case LIBRARY:
4529 			case FULLTEXT:
4530 			case MASK:
4531 			case UNMASK:
4532 			case MESSAGE:
4533 			case REMOTE:
4534 			case BINDING:
4535 			case ROUTE:
4536 			case SECURITY:
4537 			case POLICY:
4538 			case AGGREGATE:
4539 			case QUEUE:
4540 			case RULE:
4541 			case SYNONYM:
4542 			case COLLECTION:
4543 			case SCRIPT:
4544 			case KILL:
4545 			case BACKUP:
4546 			case LOG:
4547 			case SHOWPLAN:
4548 			case SUBSCRIBE:
4549 			case QUERY:
4550 			case NOTIFICATIONS:
4551 			case CHECKPOINT:
4552 			case SEQUENCE:
4553 			case ABORT_AFTER_WAIT:
4554 			case ALLOW_PAGE_LOCKS:
4555 			case ALLOW_ROW_LOCKS:
4556 			case ALL_SPARSE_COLUMNS:
4557 			case BUCKET_COUNT:
4558 			case COLUMNSTORE_ARCHIVE:
4559 			case COLUMN_ENCRYPTION_KEY:
4560 			case COLUMN_SET:
4561 			case COMPRESSION_DELAY:
4562 			case DATABASE_DEAULT:
4563 			case DATA_COMPRESSION:
4564 			case DATA_CONSISTENCY_CHECK:
4565 			case ENCRYPTION_TYPE:
4566 			case SYSTEM_TIME:
4567 			case SYSTEM_VERSIONING:
4568 			case TEXTIMAGE_ON:
4569 			case WAIT_AT_LOW_PRIORITY:
4570 			case STATISTICS_INCREMENTAL:
4571 			case STATISTICS_NORECOMPUTE:
4572 			case ROUND_ROBIN:
4573 			case SCHEMA_AND_DATA:
4574 			case SCHEMA_ONLY:
4575 			case SORT_IN_TEMPDB:
4576 			case IGNORE_DUP_KEY:
4577 			case IMPLICIT_TRANSACTIONS:
4578 			case MAX_DURATION:
4579 			case MEMORY_OPTIMIZED:
4580 			case MIGRATION_STATE:
4581 			case PAD_INDEX:
4582 			case REMOTE_DATA_ARCHIVE:
4583 			case FILESTREAM_ON:
4584 			case FILETABLE_COLLATE_FILENAME:
4585 			case FILETABLE_DIRECTORY:
4586 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
4587 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
4588 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
4589 			case FILTER_PREDICATE:
4590 			case HISTORY_RETENTION_PERIOD:
4591 			case HISTORY_TABLE:
4592 			case LOCK_ESCALATION:
4593 			case DROP_EXISTING:
4594 			case ROW_NUMBER:
4595 			case FIRST:
4596 			case DATETIME2:
4597 			case OUTPUT:
4598 			case INSERTED:
4599 			case DELETED:
4600 			case FILENAME:
4601 			case MAXSIZE:
4602 			case FILEGROWTH:
4603 			case UNLIMITED:
4604 			case KB:
4605 			case MB:
4606 			case GB:
4607 			case TB:
4608 			case MEMORY_OPTIMIZED_DATA:
4609 			case FILEGROUP:
4610 			case NON_TRANSACTED_ACCESS:
4611 			case DB_CHAINING:
4612 			case TRUSTWORTHY:
4613 			case FORWARD_ONLY:
4614 			case KEYSET:
4615 			case FAST_FORWARD:
4616 			case SCROLL_LOCKS:
4617 			case OPTIMISTIC:
4618 			case TYPE_WARNING:
4619 			case SCHEMABINDING:
4620 			case CALLER:
4621 			case OWNER:
4622 			case SNAPSHOT:
4623 			case REPEATABLE:
4624 			case SERIALIZABLE:
4625 			case NATIVE_COMPILATION:
4626 			case VIEW_METADATA:
4627 			case INSTEAD:
4628 			case APPEND:
4629 			case INCREMENT:
4630 			case CACHE:
4631 			case MINVALUE:
4632 			case MAXVALUE:
4633 			case RESTART:
4634 			case LOB_COMPACTION:
4635 			case COMPRESS_ALL_ROW_GROUPS:
4636 			case REORGANIZE:
4637 			case RESUME:
4638 			case PAUSE:
4639 			case ABORT:
4640 			case ACCELERATED_DATABASE_RECOVERY:
4641 			case PERSISTENT_VERSION_STORE_FILEGROUP:
4642 			case IMMEDIATE:
4643 			case NO_WAIT:
4644 			case TARGET_RECOVERY_TIME:
4645 			case SECONDS:
4646 			case HONOR_BROKER_PRIORITY:
4647 			case ERROR_BROKER_CONVERSATIONS:
4648 			case NEW_BROKER:
4649 			case DISABLE_BROKER:
4650 			case ENABLE_BROKER:
4651 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
4652 			case READ_COMMITTED_SNAPSHOT:
4653 			case ALLOW_SNAPSHOT_ISOLATION:
4654 			case RECURSIVE_TRIGGERS:
4655 			case QUOTED_IDENTIFIER:
4656 			case NUMERIC_ROUNDABORT:
4657 			case CONCAT_NULL_YIELDS_NULL:
4658 			case COMPATIBILITY_LEVEL:
4659 			case ARITHABORT:
4660 			case ANSI_WARNINGS:
4661 			case ANSI_PADDING:
4662 			case ANSI_NULLS:
4663 			case ANSI_NULL_DEFAULT:
4664 			case PAGE_VERIFY:
4665 			case CHECKSUM:
4666 			case TORN_PAGE_DETECTION:
4667 			case BULK_LOGGED:
4668 			case RECOVERY:
4669 			case TOTAL_EXECUTION_CPU_TIME_MS:
4670 			case TOTAL_COMPILE_CPU_TIME_MS:
4671 			case STALE_CAPTURE_POLICY_THRESHOLD:
4672 			case EXECUTION_COUNT:
4673 			case QUERY_CAPTURE_POLICY:
4674 			case WAIT_STATS_CAPTURE_MODE:
4675 			case MAX_PLANS_PER_QUERY:
4676 			case QUERY_CAPTURE_MODE:
4677 			case SIZE_BASED_CLEANUP_MODE:
4678 			case INTERVAL_LENGTH_MINUTES:
4679 			case MAX_STORAGE_SIZE_MB:
4680 			case DATA_FLUSH_INTERVAL_SECONDS:
4681 			case CLEANUP_POLICY:
4682 			case CUSTOM:
4683 			case STALE_QUERY_THRESHOLD_DAYS:
4684 			case OPERATION_MODE:
4685 			case QUERY_STORE:
4686 			case CURSOR_DEFAULT:
4687 			case GLOBAL:
4688 			case CURSOR_CLOSE_ON_COMMIT:
4689 			case HOURS:
4690 			case CHANGE_RETENTION:
4691 			case AUTO_CLEANUP:
4692 			case CHANGE_TRACKING:
4693 			case AUTOMATIC_TUNING:
4694 			case FORCE_LAST_GOOD_PLAN:
4695 			case AUTO_UPDATE_STATISTICS_ASYNC:
4696 			case AUTO_UPDATE_STATISTICS:
4697 			case AUTO_SHRINK:
4698 			case AUTO_CREATE_STATISTICS:
4699 			case INCREMENTAL:
4700 			case AUTO_CLOSE:
4701 			case DATA_RETENTION:
4702 			case TEMPORAL_HISTORY_RETENTION:
4703 			case EDITION:
4704 			case MIXED_PAGE_ALLOCATION:
4705 			case DISABLED:
4706 			case ALLOWED:
4707 			case HADR:
4708 			case MULTI_USER:
4709 			case RESTRICTED_USER:
4710 			case SINGLE_USER:
4711 			case OFFLINE:
4712 			case EMERGENCY:
4713 			case SUSPEND:
4714 			case DATE_CORRELATION_OPTIMIZATION:
4715 			case ELASTIC_POOL:
4716 			case SERVICE_OBJECTIVE:
4717 			case DATABASE_NAME:
4718 			case ALLOW_CONNECTIONS:
4719 			case GEO:
4720 			case NAMED:
4721 			case DATEFIRST:
4722 			case BACKUP_STORAGE_REDUNDANCY:
4723 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
4724 			case SECONDARY:
4725 			case FAILOVER:
4726 			case DEFAULT_FULLTEXT_LANGUAGE:
4727 			case DEFAULT_LANGUAGE:
4728 			case INLINE:
4729 			case NESTED_TRIGGERS:
4730 			case TRANSFORM_NOISE_WORDS:
4731 			case TWO_DIGIT_YEAR_CUTOFF:
4732 			case PERSISTENT_LOG_BUFFER:
4733 			case DIRECTORY_NAME:
4734 			case DATEFORMAT:
4735 			case DELAYED_DURABILITY:
4736 			case AUTHORIZATION:
4737 			case TRANSFER:
4738 			case PROVIDER:
4739 			case SEARCH:
4740 			case MEMBER:
4741 			case IDENTIFIER_:
4742 			case DELIMITED_IDENTIFIER_:
4743 				{
4744 				setState(1238);
4745 				name();
4746 				}
4747 				break;
4748 			case DOLLAR_:
4749 				{
4750 				setState(1239);
4751 				scriptVariableName();
4752 				}
4753 				break;
4754 			default:
4755 				throw new NoViableAltException(this);
4756 			}
4757 			}
4758 		}
4759 		catch (RecognitionException re) {
4760 			_localctx.exception = re;
4761 			_errHandler.reportError(this, re);
4762 			_errHandler.recover(this, re);
4763 		}
4764 		finally {
4765 			exitRule();
4766 		}
4767 		return _localctx;
4768 	}
4769 
4770 	public static class ScriptVariableNameContext extends ParserRuleContext {
4771 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
4772 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4773 		public NameContext name() {
4774 			return getRuleContext(NameContext.class,0);
4775 		}
4776 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4777 		public ScriptVariableNameContext(ParserRuleContext parent, int invokingState) {
4778 			super(parent, invokingState);
4779 		}
4780 		@Override public int getRuleIndex() { return RULE_scriptVariableName; }
4781 		@Override
4782 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4783 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitScriptVariableName(this);
4784 			else return visitor.visitChildren(this);
4785 		}
4786 	}
4787 
4788 	public final ScriptVariableNameContext scriptVariableName() throws RecognitionException {
4789 		ScriptVariableNameContext _localctx = new ScriptVariableNameContext(_ctx, getState());
4790 		enterRule(_localctx, 74, RULE_scriptVariableName);
4791 		try {
4792 			enterOuterAlt(_localctx, 1);
4793 			{
4794 			setState(1242);
4795 			match(DOLLAR_);
4796 			setState(1243);
4797 			match(LP_);
4798 			setState(1244);
4799 			name();
4800 			setState(1245);
4801 			match(RP_);
4802 			}
4803 		}
4804 		catch (RecognitionException re) {
4805 			_localctx.exception = re;
4806 			_errHandler.reportError(this, re);
4807 			_errHandler.recover(this, re);
4808 		}
4809 		finally {
4810 			exitRule();
4811 		}
4812 		return _localctx;
4813 	}
4814 
4815 	public static class OwnerContext extends ParserRuleContext {
4816 		public IdentifierContext identifier() {
4817 			return getRuleContext(IdentifierContext.class,0);
4818 		}
4819 		public OwnerContext(ParserRuleContext parent, int invokingState) {
4820 			super(parent, invokingState);
4821 		}
4822 		@Override public int getRuleIndex() { return RULE_owner; }
4823 		@Override
4824 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4825 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOwner(this);
4826 			else return visitor.visitChildren(this);
4827 		}
4828 	}
4829 
4830 	public final OwnerContext owner() throws RecognitionException {
4831 		OwnerContext _localctx = new OwnerContext(_ctx, getState());
4832 		enterRule(_localctx, 76, RULE_owner);
4833 		try {
4834 			enterOuterAlt(_localctx, 1);
4835 			{
4836 			setState(1247);
4837 			identifier();
4838 			}
4839 		}
4840 		catch (RecognitionException re) {
4841 			_localctx.exception = re;
4842 			_errHandler.reportError(this, re);
4843 			_errHandler.recover(this, re);
4844 		}
4845 		finally {
4846 			exitRule();
4847 		}
4848 		return _localctx;
4849 	}
4850 
4851 	public static class NameContext extends ParserRuleContext {
4852 		public IdentifierContext identifier() {
4853 			return getRuleContext(IdentifierContext.class,0);
4854 		}
4855 		public NameContext(ParserRuleContext parent, int invokingState) {
4856 			super(parent, invokingState);
4857 		}
4858 		@Override public int getRuleIndex() { return RULE_name; }
4859 		@Override
4860 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4861 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitName(this);
4862 			else return visitor.visitChildren(this);
4863 		}
4864 	}
4865 
4866 	public final NameContext name() throws RecognitionException {
4867 		NameContext _localctx = new NameContext(_ctx, getState());
4868 		enterRule(_localctx, 78, RULE_name);
4869 		try {
4870 			enterOuterAlt(_localctx, 1);
4871 			{
4872 			setState(1249);
4873 			identifier();
4874 			}
4875 		}
4876 		catch (RecognitionException re) {
4877 			_localctx.exception = re;
4878 			_errHandler.reportError(this, re);
4879 			_errHandler.recover(this, re);
4880 		}
4881 		finally {
4882 			exitRule();
4883 		}
4884 		return _localctx;
4885 	}
4886 
4887 	public static class ColumnNamesContext extends ParserRuleContext {
4888 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4889 		public List<ColumnNameContext> columnName() {
4890 			return getRuleContexts(ColumnNameContext.class);
4891 		}
4892 		public ColumnNameContext columnName(int i) {
4893 			return getRuleContext(ColumnNameContext.class,i);
4894 		}
4895 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4896 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4897 		public TerminalNode COMMA_(int i) {
4898 			return getToken(SQLServerStatementParser.COMMA_, i);
4899 		}
4900 		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
4901 			super(parent, invokingState);
4902 		}
4903 		@Override public int getRuleIndex() { return RULE_columnNames; }
4904 		@Override
4905 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4906 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNames(this);
4907 			else return visitor.visitChildren(this);
4908 		}
4909 	}
4910 
4911 	public final ColumnNamesContext columnNames() throws RecognitionException {
4912 		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
4913 		enterRule(_localctx, 80, RULE_columnNames);
4914 		int _la;
4915 		try {
4916 			enterOuterAlt(_localctx, 1);
4917 			{
4918 			setState(1251);
4919 			match(LP_);
4920 			setState(1252);
4921 			columnName();
4922 			setState(1257);
4923 			_errHandler.sync(this);
4924 			_la = _input.LA(1);
4925 			while (_la==COMMA_) {
4926 				{
4927 				{
4928 				setState(1253);
4929 				match(COMMA_);
4930 				setState(1254);
4931 				columnName();
4932 				}
4933 				}
4934 				setState(1259);
4935 				_errHandler.sync(this);
4936 				_la = _input.LA(1);
4937 			}
4938 			setState(1260);
4939 			match(RP_);
4940 			}
4941 		}
4942 		catch (RecognitionException re) {
4943 			_localctx.exception = re;
4944 			_errHandler.reportError(this, re);
4945 			_errHandler.recover(this, re);
4946 		}
4947 		finally {
4948 			exitRule();
4949 		}
4950 		return _localctx;
4951 	}
4952 
4953 	public static class ColumnNamesWithSortContext extends ParserRuleContext {
4954 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4955 		public List<ColumnNameWithSortContext> columnNameWithSort() {
4956 			return getRuleContexts(ColumnNameWithSortContext.class);
4957 		}
4958 		public ColumnNameWithSortContext columnNameWithSort(int i) {
4959 			return getRuleContext(ColumnNameWithSortContext.class,i);
4960 		}
4961 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4962 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4963 		public TerminalNode COMMA_(int i) {
4964 			return getToken(SQLServerStatementParser.COMMA_, i);
4965 		}
4966 		public ColumnNamesWithSortContext(ParserRuleContext parent, int invokingState) {
4967 			super(parent, invokingState);
4968 		}
4969 		@Override public int getRuleIndex() { return RULE_columnNamesWithSort; }
4970 		@Override
4971 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4972 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNamesWithSort(this);
4973 			else return visitor.visitChildren(this);
4974 		}
4975 	}
4976 
4977 	public final ColumnNamesWithSortContext columnNamesWithSort() throws RecognitionException {
4978 		ColumnNamesWithSortContext _localctx = new ColumnNamesWithSortContext(_ctx, getState());
4979 		enterRule(_localctx, 82, RULE_columnNamesWithSort);
4980 		int _la;
4981 		try {
4982 			enterOuterAlt(_localctx, 1);
4983 			{
4984 			setState(1262);
4985 			match(LP_);
4986 			setState(1263);
4987 			columnNameWithSort();
4988 			setState(1268);
4989 			_errHandler.sync(this);
4990 			_la = _input.LA(1);
4991 			while (_la==COMMA_) {
4992 				{
4993 				{
4994 				setState(1264);
4995 				match(COMMA_);
4996 				setState(1265);
4997 				columnNameWithSort();
4998 				}
4999 				}
5000 				setState(1270);
5001 				_errHandler.sync(this);
5002 				_la = _input.LA(1);
5003 			}
5004 			setState(1271);
5005 			match(RP_);
5006 			}
5007 		}
5008 		catch (RecognitionException re) {
5009 			_localctx.exception = re;
5010 			_errHandler.reportError(this, re);
5011 			_errHandler.recover(this, re);
5012 		}
5013 		finally {
5014 			exitRule();
5015 		}
5016 		return _localctx;
5017 	}
5018 
5019 	public static class TableNamesContext extends ParserRuleContext {
5020 		public List<TableNameContext> tableName() {
5021 			return getRuleContexts(TableNameContext.class);
5022 		}
5023 		public TableNameContext tableName(int i) {
5024 			return getRuleContext(TableNameContext.class,i);
5025 		}
5026 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5027 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
5028 		public TerminalNode COMMA_(int i) {
5029 			return getToken(SQLServerStatementParser.COMMA_, i);
5030 		}
5031 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5032 		public TableNamesContext(ParserRuleContext parent, int invokingState) {
5033 			super(parent, invokingState);
5034 		}
5035 		@Override public int getRuleIndex() { return RULE_tableNames; }
5036 		@Override
5037 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5038 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableNames(this);
5039 			else return visitor.visitChildren(this);
5040 		}
5041 	}
5042 
5043 	public final TableNamesContext tableNames() throws RecognitionException {
5044 		TableNamesContext _localctx = new TableNamesContext(_ctx, getState());
5045 		enterRule(_localctx, 84, RULE_tableNames);
5046 		int _la;
5047 		try {
5048 			enterOuterAlt(_localctx, 1);
5049 			{
5050 			setState(1274);
5051 			_errHandler.sync(this);
5052 			_la = _input.LA(1);
5053 			if (_la==LP_) {
5054 				{
5055 				setState(1273);
5056 				match(LP_);
5057 				}
5058 			}
5059 
5060 			setState(1276);
5061 			tableName();
5062 			setState(1281);
5063 			_errHandler.sync(this);
5064 			_la = _input.LA(1);
5065 			while (_la==COMMA_) {
5066 				{
5067 				{
5068 				setState(1277);
5069 				match(COMMA_);
5070 				setState(1278);
5071 				tableName();
5072 				}
5073 				}
5074 				setState(1283);
5075 				_errHandler.sync(this);
5076 				_la = _input.LA(1);
5077 			}
5078 			setState(1285);
5079 			_errHandler.sync(this);
5080 			_la = _input.LA(1);
5081 			if (_la==RP_) {
5082 				{
5083 				setState(1284);
5084 				match(RP_);
5085 				}
5086 			}
5087 
5088 			}
5089 		}
5090 		catch (RecognitionException re) {
5091 			_localctx.exception = re;
5092 			_errHandler.reportError(this, re);
5093 			_errHandler.recover(this, re);
5094 		}
5095 		finally {
5096 			exitRule();
5097 		}
5098 		return _localctx;
5099 	}
5100 
5101 	public static class IndexNameContext extends ParserRuleContext {
5102 		public IdentifierContext identifier() {
5103 			return getRuleContext(IdentifierContext.class,0);
5104 		}
5105 		public IndexNameContext(ParserRuleContext parent, int invokingState) {
5106 			super(parent, invokingState);
5107 		}
5108 		@Override public int getRuleIndex() { return RULE_indexName; }
5109 		@Override
5110 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5111 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexName(this);
5112 			else return visitor.visitChildren(this);
5113 		}
5114 	}
5115 
5116 	public final IndexNameContext indexName() throws RecognitionException {
5117 		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
5118 		enterRule(_localctx, 86, RULE_indexName);
5119 		try {
5120 			enterOuterAlt(_localctx, 1);
5121 			{
5122 			setState(1287);
5123 			identifier();
5124 			}
5125 		}
5126 		catch (RecognitionException re) {
5127 			_localctx.exception = re;
5128 			_errHandler.reportError(this, re);
5129 			_errHandler.recover(this, re);
5130 		}
5131 		finally {
5132 			exitRule();
5133 		}
5134 		return _localctx;
5135 	}
5136 
5137 	public static class ConstraintNameContext extends ParserRuleContext {
5138 		public IdentifierContext identifier() {
5139 			return getRuleContext(IdentifierContext.class,0);
5140 		}
5141 		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
5142 			super(parent, invokingState);
5143 		}
5144 		@Override public int getRuleIndex() { return RULE_constraintName; }
5145 		@Override
5146 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5147 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintName(this);
5148 			else return visitor.visitChildren(this);
5149 		}
5150 	}
5151 
5152 	public final ConstraintNameContext constraintName() throws RecognitionException {
5153 		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
5154 		enterRule(_localctx, 88, RULE_constraintName);
5155 		try {
5156 			enterOuterAlt(_localctx, 1);
5157 			{
5158 			setState(1289);
5159 			identifier();
5160 			}
5161 		}
5162 		catch (RecognitionException re) {
5163 			_localctx.exception = re;
5164 			_errHandler.reportError(this, re);
5165 			_errHandler.recover(this, re);
5166 		}
5167 		finally {
5168 			exitRule();
5169 		}
5170 		return _localctx;
5171 	}
5172 
5173 	public static class CollationNameContext extends ParserRuleContext {
5174 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5175 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
5176 		public CollationNameContext(ParserRuleContext parent, int invokingState) {
5177 			super(parent, invokingState);
5178 		}
5179 		@Override public int getRuleIndex() { return RULE_collationName; }
5180 		@Override
5181 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5182 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCollationName(this);
5183 			else return visitor.visitChildren(this);
5184 		}
5185 	}
5186 
5187 	public final CollationNameContext collationName() throws RecognitionException {
5188 		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
5189 		enterRule(_localctx, 90, RULE_collationName);
5190 		int _la;
5191 		try {
5192 			enterOuterAlt(_localctx, 1);
5193 			{
5194 			setState(1291);
5195 			_la = _input.LA(1);
5196 			if ( !(_la==IDENTIFIER_ || _la==STRING_) ) {
5197 			_errHandler.recoverInline(this);
5198 			}
5199 			else {
5200 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5201 				_errHandler.reportMatch(this);
5202 				consume();
5203 			}
5204 			}
5205 		}
5206 		catch (RecognitionException re) {
5207 			_localctx.exception = re;
5208 			_errHandler.reportError(this, re);
5209 			_errHandler.recover(this, re);
5210 		}
5211 		finally {
5212 			exitRule();
5213 		}
5214 		return _localctx;
5215 	}
5216 
5217 	public static class AliasContext extends ParserRuleContext {
5218 		public IdentifierContext identifier() {
5219 			return getRuleContext(IdentifierContext.class,0);
5220 		}
5221 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5222 		public AliasContext(ParserRuleContext parent, int invokingState) {
5223 			super(parent, invokingState);
5224 		}
5225 		@Override public int getRuleIndex() { return RULE_alias; }
5226 		@Override
5227 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5228 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlias(this);
5229 			else return visitor.visitChildren(this);
5230 		}
5231 	}
5232 
5233 	public final AliasContext alias() throws RecognitionException {
5234 		AliasContext _localctx = new AliasContext(_ctx, getState());
5235 		enterRule(_localctx, 92, RULE_alias);
5236 		try {
5237 			setState(1295);
5238 			_errHandler.sync(this);
5239 			switch (_input.LA(1)) {
5240 			case TRUNCATE:
5241 			case SCHEMA:
5242 			case COLUMNS:
5243 			case PRECISION:
5244 			case FUNCTION:
5245 			case TRIGGER:
5246 			case CAST:
5247 			case SUBSTRING:
5248 			case OFF:
5249 			case GROUP:
5250 			case LIMIT:
5251 			case OFFSET:
5252 			case SAVEPOINT:
5253 			case BOOLEAN:
5254 			case ARRAY:
5255 			case DATE:
5256 			case LOCALTIME:
5257 			case LOCALTIMESTAMP:
5258 			case QUARTER:
5259 			case WEEK:
5260 			case DAY:
5261 			case SECOND:
5262 			case MICROSECOND:
5263 			case MAX:
5264 			case MIN:
5265 			case SUM:
5266 			case COUNT:
5267 			case AVG:
5268 			case ENABLE:
5269 			case DISABLE:
5270 			case INSTANCE:
5271 			case DO:
5272 			case DEFINER:
5273 			case SQL:
5274 			case CASCADED:
5275 			case LOCAL:
5276 			case NEXT:
5277 			case NAME:
5278 			case INTEGER:
5279 			case TYPE:
5280 			case TEXT:
5281 			case VIEWS:
5282 			case READ_ONLY:
5283 			case DATABASE:
5284 			case RETURNS:
5285 			case DATEPART:
5286 			case PASSWORD:
5287 			case BINARY:
5288 			case HIDDEN_:
5289 			case MOD:
5290 			case PARTITION:
5291 			case PARTITIONS:
5292 			case TOP:
5293 			case ROW:
5294 			case ROWS:
5295 			case XOR:
5296 			case ALWAYS:
5297 			case ROLE:
5298 			case START:
5299 			case ALGORITHM:
5300 			case AUTO:
5301 			case BLOCKERS:
5302 			case CLUSTERED:
5303 			case NONCLUSTERED:
5304 			case COLUMNSTORE:
5305 			case CONTENT:
5306 			case YEARS:
5307 			case MONTHS:
5308 			case WEEKS:
5309 			case DAYS:
5310 			case MINUTES:
5311 			case DENY:
5312 			case DETERMINISTIC:
5313 			case DISTRIBUTION:
5314 			case DOCUMENT:
5315 			case DURABILITY:
5316 			case ENCRYPTED:
5317 			case FILESTREAM:
5318 			case FILETABLE:
5319 			case FILLFACTOR:
5320 			case FOLLOWING:
5321 			case HASH:
5322 			case HEAP:
5323 			case INBOUND:
5324 			case OUTBOUND:
5325 			case UNBOUNDED:
5326 			case INFINITE:
5327 			case LOGIN:
5328 			case MASKED:
5329 			case MAXDOP:
5330 			case MOVE:
5331 			case NOCHECK:
5332 			case OBJECT:
5333 			case ONLINE:
5334 			case OVER:
5335 			case PAGE:
5336 			case PAUSED:
5337 			case PERIOD:
5338 			case PERSISTED:
5339 			case PRECEDING:
5340 			case RANDOMIZED:
5341 			case RANGE:
5342 			case REBUILD:
5343 			case REPLICATE:
5344 			case REPLICATION:
5345 			case RESUMABLE:
5346 			case ROWGUIDCOL:
5347 			case SAVE:
5348 			case SELF:
5349 			case SPARSE:
5350 			case SWITCH:
5351 			case TRAN:
5352 			case TRANCOUNT:
5353 			case CONTROL:
5354 			case CONCAT:
5355 			case TAKE:
5356 			case OWNERSHIP:
5357 			case DEFINITION:
5358 			case APPLICATION:
5359 			case ASSEMBLY:
5360 			case SYMMETRIC:
5361 			case ASYMMETRIC:
5362 			case SERVER:
5363 			case RECEIVE:
5364 			case CHANGE:
5365 			case TRACE:
5366 			case TRACKING:
5367 			case RESOURCES:
5368 			case SETTINGS:
5369 			case STATE:
5370 			case AVAILABILITY:
5371 			case CREDENTIAL:
5372 			case ENDPOINT:
5373 			case EVENT:
5374 			case NOTIFICATION:
5375 			case LINKED:
5376 			case AUDIT:
5377 			case DDL:
5378 			case XML:
5379 			case IMPERSONATE:
5380 			case SECURABLES:
5381 			case AUTHENTICATE:
5382 			case EXTERNAL:
5383 			case ACCESS:
5384 			case ADMINISTER:
5385 			case BULK:
5386 			case OPERATIONS:
5387 			case UNSAFE:
5388 			case SHUTDOWN:
5389 			case SCOPED:
5390 			case CONFIGURATION:
5391 			case DATASPACE:
5392 			case SERVICE:
5393 			case CERTIFICATE:
5394 			case CONTRACT:
5395 			case ENCRYPTION:
5396 			case MASTER:
5397 			case DATA:
5398 			case SOURCE:
5399 			case FILE:
5400 			case FORMAT:
5401 			case LIBRARY:
5402 			case FULLTEXT:
5403 			case MASK:
5404 			case UNMASK:
5405 			case MESSAGE:
5406 			case REMOTE:
5407 			case BINDING:
5408 			case ROUTE:
5409 			case SECURITY:
5410 			case POLICY:
5411 			case AGGREGATE:
5412 			case QUEUE:
5413 			case RULE:
5414 			case SYNONYM:
5415 			case COLLECTION:
5416 			case SCRIPT:
5417 			case KILL:
5418 			case BACKUP:
5419 			case LOG:
5420 			case SHOWPLAN:
5421 			case SUBSCRIBE:
5422 			case QUERY:
5423 			case NOTIFICATIONS:
5424 			case CHECKPOINT:
5425 			case SEQUENCE:
5426 			case ABORT_AFTER_WAIT:
5427 			case ALLOW_PAGE_LOCKS:
5428 			case ALLOW_ROW_LOCKS:
5429 			case ALL_SPARSE_COLUMNS:
5430 			case BUCKET_COUNT:
5431 			case COLUMNSTORE_ARCHIVE:
5432 			case COLUMN_ENCRYPTION_KEY:
5433 			case COLUMN_SET:
5434 			case COMPRESSION_DELAY:
5435 			case DATABASE_DEAULT:
5436 			case DATA_COMPRESSION:
5437 			case DATA_CONSISTENCY_CHECK:
5438 			case ENCRYPTION_TYPE:
5439 			case SYSTEM_TIME:
5440 			case SYSTEM_VERSIONING:
5441 			case TEXTIMAGE_ON:
5442 			case WAIT_AT_LOW_PRIORITY:
5443 			case STATISTICS_INCREMENTAL:
5444 			case STATISTICS_NORECOMPUTE:
5445 			case ROUND_ROBIN:
5446 			case SCHEMA_AND_DATA:
5447 			case SCHEMA_ONLY:
5448 			case SORT_IN_TEMPDB:
5449 			case IGNORE_DUP_KEY:
5450 			case IMPLICIT_TRANSACTIONS:
5451 			case MAX_DURATION:
5452 			case MEMORY_OPTIMIZED:
5453 			case MIGRATION_STATE:
5454 			case PAD_INDEX:
5455 			case REMOTE_DATA_ARCHIVE:
5456 			case FILESTREAM_ON:
5457 			case FILETABLE_COLLATE_FILENAME:
5458 			case FILETABLE_DIRECTORY:
5459 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
5460 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
5461 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
5462 			case FILTER_PREDICATE:
5463 			case HISTORY_RETENTION_PERIOD:
5464 			case HISTORY_TABLE:
5465 			case LOCK_ESCALATION:
5466 			case DROP_EXISTING:
5467 			case ROW_NUMBER:
5468 			case FIRST:
5469 			case DATETIME2:
5470 			case OUTPUT:
5471 			case INSERTED:
5472 			case DELETED:
5473 			case FILENAME:
5474 			case MAXSIZE:
5475 			case FILEGROWTH:
5476 			case UNLIMITED:
5477 			case KB:
5478 			case MB:
5479 			case GB:
5480 			case TB:
5481 			case MEMORY_OPTIMIZED_DATA:
5482 			case FILEGROUP:
5483 			case NON_TRANSACTED_ACCESS:
5484 			case DB_CHAINING:
5485 			case TRUSTWORTHY:
5486 			case FORWARD_ONLY:
5487 			case KEYSET:
5488 			case FAST_FORWARD:
5489 			case SCROLL_LOCKS:
5490 			case OPTIMISTIC:
5491 			case TYPE_WARNING:
5492 			case SCHEMABINDING:
5493 			case CALLER:
5494 			case OWNER:
5495 			case SNAPSHOT:
5496 			case REPEATABLE:
5497 			case SERIALIZABLE:
5498 			case NATIVE_COMPILATION:
5499 			case VIEW_METADATA:
5500 			case INSTEAD:
5501 			case APPEND:
5502 			case INCREMENT:
5503 			case CACHE:
5504 			case MINVALUE:
5505 			case MAXVALUE:
5506 			case RESTART:
5507 			case LOB_COMPACTION:
5508 			case COMPRESS_ALL_ROW_GROUPS:
5509 			case REORGANIZE:
5510 			case RESUME:
5511 			case PAUSE:
5512 			case ABORT:
5513 			case ACCELERATED_DATABASE_RECOVERY:
5514 			case PERSISTENT_VERSION_STORE_FILEGROUP:
5515 			case IMMEDIATE:
5516 			case NO_WAIT:
5517 			case TARGET_RECOVERY_TIME:
5518 			case SECONDS:
5519 			case HONOR_BROKER_PRIORITY:
5520 			case ERROR_BROKER_CONVERSATIONS:
5521 			case NEW_BROKER:
5522 			case DISABLE_BROKER:
5523 			case ENABLE_BROKER:
5524 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
5525 			case READ_COMMITTED_SNAPSHOT:
5526 			case ALLOW_SNAPSHOT_ISOLATION:
5527 			case RECURSIVE_TRIGGERS:
5528 			case QUOTED_IDENTIFIER:
5529 			case NUMERIC_ROUNDABORT:
5530 			case CONCAT_NULL_YIELDS_NULL:
5531 			case COMPATIBILITY_LEVEL:
5532 			case ARITHABORT:
5533 			case ANSI_WARNINGS:
5534 			case ANSI_PADDING:
5535 			case ANSI_NULLS:
5536 			case ANSI_NULL_DEFAULT:
5537 			case PAGE_VERIFY:
5538 			case CHECKSUM:
5539 			case TORN_PAGE_DETECTION:
5540 			case BULK_LOGGED:
5541 			case RECOVERY:
5542 			case TOTAL_EXECUTION_CPU_TIME_MS:
5543 			case TOTAL_COMPILE_CPU_TIME_MS:
5544 			case STALE_CAPTURE_POLICY_THRESHOLD:
5545 			case EXECUTION_COUNT:
5546 			case QUERY_CAPTURE_POLICY:
5547 			case WAIT_STATS_CAPTURE_MODE:
5548 			case MAX_PLANS_PER_QUERY:
5549 			case QUERY_CAPTURE_MODE:
5550 			case SIZE_BASED_CLEANUP_MODE:
5551 			case INTERVAL_LENGTH_MINUTES:
5552 			case MAX_STORAGE_SIZE_MB:
5553 			case DATA_FLUSH_INTERVAL_SECONDS:
5554 			case CLEANUP_POLICY:
5555 			case CUSTOM:
5556 			case STALE_QUERY_THRESHOLD_DAYS:
5557 			case OPERATION_MODE:
5558 			case QUERY_STORE:
5559 			case CURSOR_DEFAULT:
5560 			case GLOBAL:
5561 			case CURSOR_CLOSE_ON_COMMIT:
5562 			case HOURS:
5563 			case CHANGE_RETENTION:
5564 			case AUTO_CLEANUP:
5565 			case CHANGE_TRACKING:
5566 			case AUTOMATIC_TUNING:
5567 			case FORCE_LAST_GOOD_PLAN:
5568 			case AUTO_UPDATE_STATISTICS_ASYNC:
5569 			case AUTO_UPDATE_STATISTICS:
5570 			case AUTO_SHRINK:
5571 			case AUTO_CREATE_STATISTICS:
5572 			case INCREMENTAL:
5573 			case AUTO_CLOSE:
5574 			case DATA_RETENTION:
5575 			case TEMPORAL_HISTORY_RETENTION:
5576 			case EDITION:
5577 			case MIXED_PAGE_ALLOCATION:
5578 			case DISABLED:
5579 			case ALLOWED:
5580 			case HADR:
5581 			case MULTI_USER:
5582 			case RESTRICTED_USER:
5583 			case SINGLE_USER:
5584 			case OFFLINE:
5585 			case EMERGENCY:
5586 			case SUSPEND:
5587 			case DATE_CORRELATION_OPTIMIZATION:
5588 			case ELASTIC_POOL:
5589 			case SERVICE_OBJECTIVE:
5590 			case DATABASE_NAME:
5591 			case ALLOW_CONNECTIONS:
5592 			case GEO:
5593 			case NAMED:
5594 			case DATEFIRST:
5595 			case BACKUP_STORAGE_REDUNDANCY:
5596 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
5597 			case SECONDARY:
5598 			case FAILOVER:
5599 			case DEFAULT_FULLTEXT_LANGUAGE:
5600 			case DEFAULT_LANGUAGE:
5601 			case INLINE:
5602 			case NESTED_TRIGGERS:
5603 			case TRANSFORM_NOISE_WORDS:
5604 			case TWO_DIGIT_YEAR_CUTOFF:
5605 			case PERSISTENT_LOG_BUFFER:
5606 			case DIRECTORY_NAME:
5607 			case DATEFORMAT:
5608 			case DELAYED_DURABILITY:
5609 			case AUTHORIZATION:
5610 			case TRANSFER:
5611 			case PROVIDER:
5612 			case SEARCH:
5613 			case MEMBER:
5614 			case IDENTIFIER_:
5615 			case DELIMITED_IDENTIFIER_:
5616 				enterOuterAlt(_localctx, 1);
5617 				{
5618 				setState(1293);
5619 				identifier();
5620 				}
5621 				break;
5622 			case STRING_:
5623 				enterOuterAlt(_localctx, 2);
5624 				{
5625 				setState(1294);
5626 				match(STRING_);
5627 				}
5628 				break;
5629 			default:
5630 				throw new NoViableAltException(this);
5631 			}
5632 		}
5633 		catch (RecognitionException re) {
5634 			_localctx.exception = re;
5635 			_errHandler.reportError(this, re);
5636 			_errHandler.recover(this, re);
5637 		}
5638 		finally {
5639 			exitRule();
5640 		}
5641 		return _localctx;
5642 	}
5643 
5644 	public static class DataTypeLengthContext extends ParserRuleContext {
5645 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5646 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5647 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
5648 		public TerminalNode NUMBER_(int i) {
5649 			return getToken(SQLServerStatementParser.NUMBER_, i);
5650 		}
5651 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
5652 		public DataTypeLengthContext(ParserRuleContext parent, int invokingState) {
5653 			super(parent, invokingState);
5654 		}
5655 		@Override public int getRuleIndex() { return RULE_dataTypeLength; }
5656 		@Override
5657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeLength(this);
5659 			else return visitor.visitChildren(this);
5660 		}
5661 	}
5662 
5663 	public final DataTypeLengthContext dataTypeLength() throws RecognitionException {
5664 		DataTypeLengthContext _localctx = new DataTypeLengthContext(_ctx, getState());
5665 		enterRule(_localctx, 94, RULE_dataTypeLength);
5666 		int _la;
5667 		try {
5668 			enterOuterAlt(_localctx, 1);
5669 			{
5670 			setState(1297);
5671 			match(LP_);
5672 			setState(1303);
5673 			_errHandler.sync(this);
5674 			_la = _input.LA(1);
5675 			if (_la==NUMBER_) {
5676 				{
5677 				setState(1298);
5678 				match(NUMBER_);
5679 				setState(1301);
5680 				_errHandler.sync(this);
5681 				_la = _input.LA(1);
5682 				if (_la==COMMA_) {
5683 					{
5684 					setState(1299);
5685 					match(COMMA_);
5686 					setState(1300);
5687 					match(NUMBER_);
5688 					}
5689 				}
5690 
5691 				}
5692 			}
5693 
5694 			setState(1305);
5695 			match(RP_);
5696 			}
5697 		}
5698 		catch (RecognitionException re) {
5699 			_localctx.exception = re;
5700 			_errHandler.reportError(this, re);
5701 			_errHandler.recover(this, re);
5702 		}
5703 		finally {
5704 			exitRule();
5705 		}
5706 		return _localctx;
5707 	}
5708 
5709 	public static class PrimaryKeyContext extends ParserRuleContext {
5710 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
5711 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
5712 		public PrimaryKeyContext(ParserRuleContext parent, int invokingState) {
5713 			super(parent, invokingState);
5714 		}
5715 		@Override public int getRuleIndex() { return RULE_primaryKey; }
5716 		@Override
5717 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5718 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKey(this);
5719 			else return visitor.visitChildren(this);
5720 		}
5721 	}
5722 
5723 	public final PrimaryKeyContext primaryKey() throws RecognitionException {
5724 		PrimaryKeyContext _localctx = new PrimaryKeyContext(_ctx, getState());
5725 		enterRule(_localctx, 96, RULE_primaryKey);
5726 		int _la;
5727 		try {
5728 			enterOuterAlt(_localctx, 1);
5729 			{
5730 			setState(1308);
5731 			_errHandler.sync(this);
5732 			_la = _input.LA(1);
5733 			if (_la==PRIMARY) {
5734 				{
5735 				setState(1307);
5736 				match(PRIMARY);
5737 				}
5738 			}
5739 
5740 			setState(1310);
5741 			match(KEY);
5742 			}
5743 		}
5744 		catch (RecognitionException re) {
5745 			_localctx.exception = re;
5746 			_errHandler.reportError(this, re);
5747 			_errHandler.recover(this, re);
5748 		}
5749 		finally {
5750 			exitRule();
5751 		}
5752 		return _localctx;
5753 	}
5754 
5755 	public static class ExprContext extends ParserRuleContext {
5756 		public NotOperatorContext notOperator() {
5757 			return getRuleContext(NotOperatorContext.class,0);
5758 		}
5759 		public List<ExprContext> expr() {
5760 			return getRuleContexts(ExprContext.class);
5761 		}
5762 		public ExprContext expr(int i) {
5763 			return getRuleContext(ExprContext.class,i);
5764 		}
5765 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5766 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5767 		public BooleanPrimaryContext booleanPrimary() {
5768 			return getRuleContext(BooleanPrimaryContext.class,0);
5769 		}
5770 		public AndOperatorContext andOperator() {
5771 			return getRuleContext(AndOperatorContext.class,0);
5772 		}
5773 		public OrOperatorContext orOperator() {
5774 			return getRuleContext(OrOperatorContext.class,0);
5775 		}
5776 		public ExprContext(ParserRuleContext parent, int invokingState) {
5777 			super(parent, invokingState);
5778 		}
5779 		@Override public int getRuleIndex() { return RULE_expr; }
5780 		@Override
5781 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5782 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExpr(this);
5783 			else return visitor.visitChildren(this);
5784 		}
5785 	}
5786 
5787 	public final ExprContext expr() throws RecognitionException {
5788 		return expr(0);
5789 	}
5790 
5791 	private ExprContext expr(int _p) throws RecognitionException {
5792 		ParserRuleContext _parentctx = _ctx;
5793 		int _parentState = getState();
5794 		ExprContext _localctx = new ExprContext(_ctx, _parentState);
5795 		ExprContext _prevctx = _localctx;
5796 		int _startState = 98;
5797 		enterRecursionRule(_localctx, 98, RULE_expr, _p);
5798 		try {
5799 			int _alt;
5800 			enterOuterAlt(_localctx, 1);
5801 			{
5802 			setState(1321);
5803 			_errHandler.sync(this);
5804 			switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
5805 			case 1:
5806 				{
5807 				setState(1313);
5808 				notOperator();
5809 				setState(1314);
5810 				expr(3);
5811 				}
5812 				break;
5813 			case 2:
5814 				{
5815 				setState(1316);
5816 				match(LP_);
5817 				setState(1317);
5818 				expr(0);
5819 				setState(1318);
5820 				match(RP_);
5821 				}
5822 				break;
5823 			case 3:
5824 				{
5825 				setState(1320);
5826 				booleanPrimary(0);
5827 				}
5828 				break;
5829 			}
5830 			_ctx.stop = _input.LT(-1);
5831 			setState(1333);
5832 			_errHandler.sync(this);
5833 			_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
5834 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
5835 				if ( _alt==1 ) {
5836 					if ( _parseListeners!=null ) triggerExitRuleEvent();
5837 					_prevctx = _localctx;
5838 					{
5839 					setState(1331);
5840 					_errHandler.sync(this);
5841 					switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
5842 					case 1:
5843 						{
5844 						_localctx = new ExprContext(_parentctx, _parentState);
5845 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5846 						setState(1323);
5847 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
5848 						setState(1324);
5849 						andOperator();
5850 						setState(1325);
5851 						expr(6);
5852 						}
5853 						break;
5854 					case 2:
5855 						{
5856 						_localctx = new ExprContext(_parentctx, _parentState);
5857 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5858 						setState(1327);
5859 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
5860 						setState(1328);
5861 						orOperator();
5862 						setState(1329);
5863 						expr(5);
5864 						}
5865 						break;
5866 					}
5867 					} 
5868 				}
5869 				setState(1335);
5870 				_errHandler.sync(this);
5871 				_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
5872 			}
5873 			}
5874 		}
5875 		catch (RecognitionException re) {
5876 			_localctx.exception = re;
5877 			_errHandler.reportError(this, re);
5878 			_errHandler.recover(this, re);
5879 		}
5880 		finally {
5881 			unrollRecursionContexts(_parentctx);
5882 		}
5883 		return _localctx;
5884 	}
5885 
5886 	public static class AndOperatorContext extends ParserRuleContext {
5887 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
5888 		public TerminalNode AND_() { return getToken(SQLServerStatementParser.AND_, 0); }
5889 		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
5890 			super(parent, invokingState);
5891 		}
5892 		@Override public int getRuleIndex() { return RULE_andOperator; }
5893 		@Override
5894 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5895 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAndOperator(this);
5896 			else return visitor.visitChildren(this);
5897 		}
5898 	}
5899 
5900 	public final AndOperatorContext andOperator() throws RecognitionException {
5901 		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
5902 		enterRule(_localctx, 100, RULE_andOperator);
5903 		int _la;
5904 		try {
5905 			enterOuterAlt(_localctx, 1);
5906 			{
5907 			setState(1336);
5908 			_la = _input.LA(1);
5909 			if ( !(_la==AND_ || _la==AND) ) {
5910 			_errHandler.recoverInline(this);
5911 			}
5912 			else {
5913 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5914 				_errHandler.reportMatch(this);
5915 				consume();
5916 			}
5917 			}
5918 		}
5919 		catch (RecognitionException re) {
5920 			_localctx.exception = re;
5921 			_errHandler.reportError(this, re);
5922 			_errHandler.recover(this, re);
5923 		}
5924 		finally {
5925 			exitRule();
5926 		}
5927 		return _localctx;
5928 	}
5929 
5930 	public static class OrOperatorContext extends ParserRuleContext {
5931 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
5932 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
5933 		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
5934 			super(parent, invokingState);
5935 		}
5936 		@Override public int getRuleIndex() { return RULE_orOperator; }
5937 		@Override
5938 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5939 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrOperator(this);
5940 			else return visitor.visitChildren(this);
5941 		}
5942 	}
5943 
5944 	public final OrOperatorContext orOperator() throws RecognitionException {
5945 		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
5946 		enterRule(_localctx, 102, RULE_orOperator);
5947 		int _la;
5948 		try {
5949 			enterOuterAlt(_localctx, 1);
5950 			{
5951 			setState(1338);
5952 			_la = _input.LA(1);
5953 			if ( !(_la==OR_ || _la==OR) ) {
5954 			_errHandler.recoverInline(this);
5955 			}
5956 			else {
5957 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5958 				_errHandler.reportMatch(this);
5959 				consume();
5960 			}
5961 			}
5962 		}
5963 		catch (RecognitionException re) {
5964 			_localctx.exception = re;
5965 			_errHandler.reportError(this, re);
5966 			_errHandler.recover(this, re);
5967 		}
5968 		finally {
5969 			exitRule();
5970 		}
5971 		return _localctx;
5972 	}
5973 
5974 	public static class NotOperatorContext extends ParserRuleContext {
5975 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
5976 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
5977 		public NotOperatorContext(ParserRuleContext parent, int invokingState) {
5978 			super(parent, invokingState);
5979 		}
5980 		@Override public int getRuleIndex() { return RULE_notOperator; }
5981 		@Override
5982 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5983 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNotOperator(this);
5984 			else return visitor.visitChildren(this);
5985 		}
5986 	}
5987 
5988 	public final NotOperatorContext notOperator() throws RecognitionException {
5989 		NotOperatorContext _localctx = new NotOperatorContext(_ctx, getState());
5990 		enterRule(_localctx, 104, RULE_notOperator);
5991 		int _la;
5992 		try {
5993 			enterOuterAlt(_localctx, 1);
5994 			{
5995 			setState(1340);
5996 			_la = _input.LA(1);
5997 			if ( !(_la==NOT_ || _la==NOT) ) {
5998 			_errHandler.recoverInline(this);
5999 			}
6000 			else {
6001 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6002 				_errHandler.reportMatch(this);
6003 				consume();
6004 			}
6005 			}
6006 		}
6007 		catch (RecognitionException re) {
6008 			_localctx.exception = re;
6009 			_errHandler.reportError(this, re);
6010 			_errHandler.recover(this, re);
6011 		}
6012 		finally {
6013 			exitRule();
6014 		}
6015 		return _localctx;
6016 	}
6017 
6018 	public static class BooleanPrimaryContext extends ParserRuleContext {
6019 		public PredicateContext predicate() {
6020 			return getRuleContext(PredicateContext.class,0);
6021 		}
6022 		public BooleanPrimaryContext booleanPrimary() {
6023 			return getRuleContext(BooleanPrimaryContext.class,0);
6024 		}
6025 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6026 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
6027 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
6028 		public TerminalNode UNKNOWN() { return getToken(SQLServerStatementParser.UNKNOWN, 0); }
6029 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
6030 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6031 		public TerminalNode SAFE_EQ_() { return getToken(SQLServerStatementParser.SAFE_EQ_, 0); }
6032 		public ComparisonOperatorContext comparisonOperator() {
6033 			return getRuleContext(ComparisonOperatorContext.class,0);
6034 		}
6035 		public SubqueryContext subquery() {
6036 			return getRuleContext(SubqueryContext.class,0);
6037 		}
6038 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
6039 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
6040 		public BooleanPrimaryContext(ParserRuleContext parent, int invokingState) {
6041 			super(parent, invokingState);
6042 		}
6043 		@Override public int getRuleIndex() { return RULE_booleanPrimary; }
6044 		@Override
6045 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6046 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanPrimary(this);
6047 			else return visitor.visitChildren(this);
6048 		}
6049 	}
6050 
6051 	public final BooleanPrimaryContext booleanPrimary() throws RecognitionException {
6052 		return booleanPrimary(0);
6053 	}
6054 
6055 	private BooleanPrimaryContext booleanPrimary(int _p) throws RecognitionException {
6056 		ParserRuleContext _parentctx = _ctx;
6057 		int _parentState = getState();
6058 		BooleanPrimaryContext _localctx = new BooleanPrimaryContext(_ctx, _parentState);
6059 		BooleanPrimaryContext _prevctx = _localctx;
6060 		int _startState = 106;
6061 		enterRecursionRule(_localctx, 106, RULE_booleanPrimary, _p);
6062 		int _la;
6063 		try {
6064 			int _alt;
6065 			enterOuterAlt(_localctx, 1);
6066 			{
6067 			{
6068 			setState(1343);
6069 			predicate();
6070 			}
6071 			_ctx.stop = _input.LT(-1);
6072 			setState(1365);
6073 			_errHandler.sync(this);
6074 			_alt = getInterpreter().adaptivePredict(_input,46,_ctx);
6075 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6076 				if ( _alt==1 ) {
6077 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6078 					_prevctx = _localctx;
6079 					{
6080 					setState(1363);
6081 					_errHandler.sync(this);
6082 					switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
6083 					case 1:
6084 						{
6085 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6086 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6087 						setState(1345);
6088 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6089 						setState(1346);
6090 						match(IS);
6091 						setState(1348);
6092 						_errHandler.sync(this);
6093 						_la = _input.LA(1);
6094 						if (_la==NOT) {
6095 							{
6096 							setState(1347);
6097 							match(NOT);
6098 							}
6099 						}
6100 
6101 						setState(1350);
6102 						_la = _input.LA(1);
6103 						if ( !(((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (NULL - 108)) | (1L << (TRUE - 108)) | (1L << (FALSE - 108)))) != 0) || _la==UNKNOWN) ) {
6104 						_errHandler.recoverInline(this);
6105 						}
6106 						else {
6107 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6108 							_errHandler.reportMatch(this);
6109 							consume();
6110 						}
6111 						}
6112 						break;
6113 					case 2:
6114 						{
6115 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6116 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6117 						setState(1351);
6118 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6119 						setState(1352);
6120 						match(SAFE_EQ_);
6121 						setState(1353);
6122 						predicate();
6123 						}
6124 						break;
6125 					case 3:
6126 						{
6127 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6128 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6129 						setState(1354);
6130 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6131 						setState(1355);
6132 						comparisonOperator();
6133 						setState(1356);
6134 						predicate();
6135 						}
6136 						break;
6137 					case 4:
6138 						{
6139 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6140 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6141 						setState(1358);
6142 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6143 						setState(1359);
6144 						comparisonOperator();
6145 						setState(1360);
6146 						_la = _input.LA(1);
6147 						if ( !(_la==ALL || _la==ANY) ) {
6148 						_errHandler.recoverInline(this);
6149 						}
6150 						else {
6151 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6152 							_errHandler.reportMatch(this);
6153 							consume();
6154 						}
6155 						setState(1361);
6156 						subquery();
6157 						}
6158 						break;
6159 					}
6160 					} 
6161 				}
6162 				setState(1367);
6163 				_errHandler.sync(this);
6164 				_alt = getInterpreter().adaptivePredict(_input,46,_ctx);
6165 			}
6166 			}
6167 		}
6168 		catch (RecognitionException re) {
6169 			_localctx.exception = re;
6170 			_errHandler.reportError(this, re);
6171 			_errHandler.recover(this, re);
6172 		}
6173 		finally {
6174 			unrollRecursionContexts(_parentctx);
6175 		}
6176 		return _localctx;
6177 	}
6178 
6179 	public static class ComparisonOperatorContext extends ParserRuleContext {
6180 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
6181 		public TerminalNode GTE_() { return getToken(SQLServerStatementParser.GTE_, 0); }
6182 		public TerminalNode GT_() { return getToken(SQLServerStatementParser.GT_, 0); }
6183 		public TerminalNode LTE_() { return getToken(SQLServerStatementParser.LTE_, 0); }
6184 		public TerminalNode LT_() { return getToken(SQLServerStatementParser.LT_, 0); }
6185 		public TerminalNode NEQ_() { return getToken(SQLServerStatementParser.NEQ_, 0); }
6186 		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
6187 			super(parent, invokingState);
6188 		}
6189 		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
6190 		@Override
6191 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6192 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComparisonOperator(this);
6193 			else return visitor.visitChildren(this);
6194 		}
6195 	}
6196 
6197 	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
6198 		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
6199 		enterRule(_localctx, 108, RULE_comparisonOperator);
6200 		int _la;
6201 		try {
6202 			enterOuterAlt(_localctx, 1);
6203 			{
6204 			setState(1368);
6205 			_la = _input.LA(1);
6206 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
6207 			_errHandler.recoverInline(this);
6208 			}
6209 			else {
6210 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6211 				_errHandler.reportMatch(this);
6212 				consume();
6213 			}
6214 			}
6215 		}
6216 		catch (RecognitionException re) {
6217 			_localctx.exception = re;
6218 			_errHandler.reportError(this, re);
6219 			_errHandler.recover(this, re);
6220 		}
6221 		finally {
6222 			exitRule();
6223 		}
6224 		return _localctx;
6225 	}
6226 
6227 	public static class PredicateContext extends ParserRuleContext {
6228 		public List<BitExprContext> bitExpr() {
6229 			return getRuleContexts(BitExprContext.class);
6230 		}
6231 		public BitExprContext bitExpr(int i) {
6232 			return getRuleContext(BitExprContext.class,i);
6233 		}
6234 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
6235 		public SubqueryContext subquery() {
6236 			return getRuleContext(SubqueryContext.class,0);
6237 		}
6238 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6239 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6240 		public List<ExprContext> expr() {
6241 			return getRuleContexts(ExprContext.class);
6242 		}
6243 		public ExprContext expr(int i) {
6244 			return getRuleContext(ExprContext.class,i);
6245 		}
6246 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6247 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6248 		public TerminalNode COMMA_(int i) {
6249 			return getToken(SQLServerStatementParser.COMMA_, i);
6250 		}
6251 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
6252 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
6253 		public PredicateContext predicate() {
6254 			return getRuleContext(PredicateContext.class,0);
6255 		}
6256 		public TerminalNode LIKE() { return getToken(SQLServerStatementParser.LIKE, 0); }
6257 		public List<SimpleExprContext> simpleExpr() {
6258 			return getRuleContexts(SimpleExprContext.class);
6259 		}
6260 		public SimpleExprContext simpleExpr(int i) {
6261 			return getRuleContext(SimpleExprContext.class,i);
6262 		}
6263 		public TerminalNode ESCAPE() { return getToken(SQLServerStatementParser.ESCAPE, 0); }
6264 		public PredicateContext(ParserRuleContext parent, int invokingState) {
6265 			super(parent, invokingState);
6266 		}
6267 		@Override public int getRuleIndex() { return RULE_predicate; }
6268 		@Override
6269 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6270 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPredicate(this);
6271 			else return visitor.visitChildren(this);
6272 		}
6273 	}
6274 
6275 	public final PredicateContext predicate() throws RecognitionException {
6276 		PredicateContext _localctx = new PredicateContext(_ctx, getState());
6277 		enterRule(_localctx, 110, RULE_predicate);
6278 		int _la;
6279 		try {
6280 			setState(1413);
6281 			_errHandler.sync(this);
6282 			switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
6283 			case 1:
6284 				enterOuterAlt(_localctx, 1);
6285 				{
6286 				setState(1370);
6287 				bitExpr(0);
6288 				setState(1372);
6289 				_errHandler.sync(this);
6290 				_la = _input.LA(1);
6291 				if (_la==NOT) {
6292 					{
6293 					setState(1371);
6294 					match(NOT);
6295 					}
6296 				}
6297 
6298 				setState(1374);
6299 				match(IN);
6300 				setState(1375);
6301 				subquery();
6302 				}
6303 				break;
6304 			case 2:
6305 				enterOuterAlt(_localctx, 2);
6306 				{
6307 				setState(1377);
6308 				bitExpr(0);
6309 				setState(1379);
6310 				_errHandler.sync(this);
6311 				_la = _input.LA(1);
6312 				if (_la==NOT) {
6313 					{
6314 					setState(1378);
6315 					match(NOT);
6316 					}
6317 				}
6318 
6319 				setState(1381);
6320 				match(IN);
6321 				setState(1382);
6322 				match(LP_);
6323 				setState(1383);
6324 				expr(0);
6325 				setState(1388);
6326 				_errHandler.sync(this);
6327 				_la = _input.LA(1);
6328 				while (_la==COMMA_) {
6329 					{
6330 					{
6331 					setState(1384);
6332 					match(COMMA_);
6333 					setState(1385);
6334 					expr(0);
6335 					}
6336 					}
6337 					setState(1390);
6338 					_errHandler.sync(this);
6339 					_la = _input.LA(1);
6340 				}
6341 				setState(1391);
6342 				match(RP_);
6343 				}
6344 				break;
6345 			case 3:
6346 				enterOuterAlt(_localctx, 3);
6347 				{
6348 				setState(1393);
6349 				bitExpr(0);
6350 				setState(1395);
6351 				_errHandler.sync(this);
6352 				_la = _input.LA(1);
6353 				if (_la==NOT) {
6354 					{
6355 					setState(1394);
6356 					match(NOT);
6357 					}
6358 				}
6359 
6360 				setState(1397);
6361 				match(BETWEEN);
6362 				setState(1398);
6363 				bitExpr(0);
6364 				setState(1399);
6365 				match(AND);
6366 				setState(1400);
6367 				predicate();
6368 				}
6369 				break;
6370 			case 4:
6371 				enterOuterAlt(_localctx, 4);
6372 				{
6373 				setState(1402);
6374 				bitExpr(0);
6375 				setState(1404);
6376 				_errHandler.sync(this);
6377 				_la = _input.LA(1);
6378 				if (_la==NOT) {
6379 					{
6380 					setState(1403);
6381 					match(NOT);
6382 					}
6383 				}
6384 
6385 				setState(1406);
6386 				match(LIKE);
6387 				setState(1407);
6388 				simpleExpr(0);
6389 				setState(1410);
6390 				_errHandler.sync(this);
6391 				switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
6392 				case 1:
6393 					{
6394 					setState(1408);
6395 					match(ESCAPE);
6396 					setState(1409);
6397 					simpleExpr(0);
6398 					}
6399 					break;
6400 				}
6401 				}
6402 				break;
6403 			case 5:
6404 				enterOuterAlt(_localctx, 5);
6405 				{
6406 				setState(1412);
6407 				bitExpr(0);
6408 				}
6409 				break;
6410 			}
6411 		}
6412 		catch (RecognitionException re) {
6413 			_localctx.exception = re;
6414 			_errHandler.reportError(this, re);
6415 			_errHandler.recover(this, re);
6416 		}
6417 		finally {
6418 			exitRule();
6419 		}
6420 		return _localctx;
6421 	}
6422 
6423 	public static class BitExprContext extends ParserRuleContext {
6424 		public SimpleExprContext simpleExpr() {
6425 			return getRuleContext(SimpleExprContext.class,0);
6426 		}
6427 		public List<BitExprContext> bitExpr() {
6428 			return getRuleContexts(BitExprContext.class);
6429 		}
6430 		public BitExprContext bitExpr(int i) {
6431 			return getRuleContext(BitExprContext.class,i);
6432 		}
6433 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
6434 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
6435 		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_LEFT_SHIFT_, 0); }
6436 		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
6437 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6438 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6439 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6440 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
6441 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
6442 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
6443 		public BitExprContext(ParserRuleContext parent, int invokingState) {
6444 			super(parent, invokingState);
6445 		}
6446 		@Override public int getRuleIndex() { return RULE_bitExpr; }
6447 		@Override
6448 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6449 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitExpr(this);
6450 			else return visitor.visitChildren(this);
6451 		}
6452 	}
6453 
6454 	public final BitExprContext bitExpr() throws RecognitionException {
6455 		return bitExpr(0);
6456 	}
6457 
6458 	private BitExprContext bitExpr(int _p) throws RecognitionException {
6459 		ParserRuleContext _parentctx = _ctx;
6460 		int _parentState = getState();
6461 		BitExprContext _localctx = new BitExprContext(_ctx, _parentState);
6462 		BitExprContext _prevctx = _localctx;
6463 		int _startState = 112;
6464 		enterRecursionRule(_localctx, 112, RULE_bitExpr, _p);
6465 		try {
6466 			int _alt;
6467 			enterOuterAlt(_localctx, 1);
6468 			{
6469 			{
6470 			setState(1416);
6471 			simpleExpr(0);
6472 			}
6473 			_ctx.stop = _input.LT(-1);
6474 			setState(1450);
6475 			_errHandler.sync(this);
6476 			_alt = getInterpreter().adaptivePredict(_input,55,_ctx);
6477 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6478 				if ( _alt==1 ) {
6479 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6480 					_prevctx = _localctx;
6481 					{
6482 					setState(1448);
6483 					_errHandler.sync(this);
6484 					switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
6485 					case 1:
6486 						{
6487 						_localctx = new BitExprContext(_parentctx, _parentState);
6488 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6489 						setState(1418);
6490 						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
6491 						setState(1419);
6492 						match(VERTICAL_BAR_);
6493 						setState(1420);
6494 						bitExpr(12);
6495 						}
6496 						break;
6497 					case 2:
6498 						{
6499 						_localctx = new BitExprContext(_parentctx, _parentState);
6500 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6501 						setState(1421);
6502 						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
6503 						setState(1422);
6504 						match(AMPERSAND_);
6505 						setState(1423);
6506 						bitExpr(11);
6507 						}
6508 						break;
6509 					case 3:
6510 						{
6511 						_localctx = new BitExprContext(_parentctx, _parentState);
6512 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6513 						setState(1424);
6514 						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
6515 						setState(1425);
6516 						match(SIGNED_LEFT_SHIFT_);
6517 						setState(1426);
6518 						bitExpr(10);
6519 						}
6520 						break;
6521 					case 4:
6522 						{
6523 						_localctx = new BitExprContext(_parentctx, _parentState);
6524 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6525 						setState(1427);
6526 						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
6527 						setState(1428);
6528 						match(SIGNED_RIGHT_SHIFT_);
6529 						setState(1429);
6530 						bitExpr(9);
6531 						}
6532 						break;
6533 					case 5:
6534 						{
6535 						_localctx = new BitExprContext(_parentctx, _parentState);
6536 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6537 						setState(1430);
6538 						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6539 						setState(1431);
6540 						match(PLUS_);
6541 						setState(1432);
6542 						bitExpr(8);
6543 						}
6544 						break;
6545 					case 6:
6546 						{
6547 						_localctx = new BitExprContext(_parentctx, _parentState);
6548 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6549 						setState(1433);
6550 						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
6551 						setState(1434);
6552 						match(MINUS_);
6553 						setState(1435);
6554 						bitExpr(7);
6555 						}
6556 						break;
6557 					case 7:
6558 						{
6559 						_localctx = new BitExprContext(_parentctx, _parentState);
6560 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6561 						setState(1436);
6562 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6563 						setState(1437);
6564 						match(ASTERISK_);
6565 						setState(1438);
6566 						bitExpr(6);
6567 						}
6568 						break;
6569 					case 8:
6570 						{
6571 						_localctx = new BitExprContext(_parentctx, _parentState);
6572 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6573 						setState(1439);
6574 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6575 						setState(1440);
6576 						match(SLASH_);
6577 						setState(1441);
6578 						bitExpr(5);
6579 						}
6580 						break;
6581 					case 9:
6582 						{
6583 						_localctx = new BitExprContext(_parentctx, _parentState);
6584 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6585 						setState(1442);
6586 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6587 						setState(1443);
6588 						match(MOD_);
6589 						setState(1444);
6590 						bitExpr(4);
6591 						}
6592 						break;
6593 					case 10:
6594 						{
6595 						_localctx = new BitExprContext(_parentctx, _parentState);
6596 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6597 						setState(1445);
6598 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6599 						setState(1446);
6600 						match(CARET_);
6601 						setState(1447);
6602 						bitExpr(3);
6603 						}
6604 						break;
6605 					}
6606 					} 
6607 				}
6608 				setState(1452);
6609 				_errHandler.sync(this);
6610 				_alt = getInterpreter().adaptivePredict(_input,55,_ctx);
6611 			}
6612 			}
6613 		}
6614 		catch (RecognitionException re) {
6615 			_localctx.exception = re;
6616 			_errHandler.reportError(this, re);
6617 			_errHandler.recover(this, re);
6618 		}
6619 		finally {
6620 			unrollRecursionContexts(_parentctx);
6621 		}
6622 		return _localctx;
6623 	}
6624 
6625 	public static class SimpleExprContext extends ParserRuleContext {
6626 		public FunctionCallContext functionCall() {
6627 			return getRuleContext(FunctionCallContext.class,0);
6628 		}
6629 		public ParameterMarkerContext parameterMarker() {
6630 			return getRuleContext(ParameterMarkerContext.class,0);
6631 		}
6632 		public LiteralsContext literals() {
6633 			return getRuleContext(LiteralsContext.class,0);
6634 		}
6635 		public ColumnNameContext columnName() {
6636 			return getRuleContext(ColumnNameContext.class,0);
6637 		}
6638 		public VariableNameContext variableName() {
6639 			return getRuleContext(VariableNameContext.class,0);
6640 		}
6641 		public List<SimpleExprContext> simpleExpr() {
6642 			return getRuleContexts(SimpleExprContext.class);
6643 		}
6644 		public SimpleExprContext simpleExpr(int i) {
6645 			return getRuleContext(SimpleExprContext.class,i);
6646 		}
6647 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6648 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6649 		public TerminalNode TILDE_() { return getToken(SQLServerStatementParser.TILDE_, 0); }
6650 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6651 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
6652 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6653 		public List<ExprContext> expr() {
6654 			return getRuleContexts(ExprContext.class);
6655 		}
6656 		public ExprContext expr(int i) {
6657 			return getRuleContext(ExprContext.class,i);
6658 		}
6659 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6660 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
6661 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6662 		public TerminalNode COMMA_(int i) {
6663 			return getToken(SQLServerStatementParser.COMMA_, i);
6664 		}
6665 		public SubqueryContext subquery() {
6666 			return getRuleContext(SubqueryContext.class,0);
6667 		}
6668 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
6669 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
6670 		public IdentifierContext identifier() {
6671 			return getRuleContext(IdentifierContext.class,0);
6672 		}
6673 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
6674 		public CaseExpressionContext caseExpression() {
6675 			return getRuleContext(CaseExpressionContext.class,0);
6676 		}
6677 		public PrivateExprOfDbContext privateExprOfDb() {
6678 			return getRuleContext(PrivateExprOfDbContext.class,0);
6679 		}
6680 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6681 		public SimpleExprContext(ParserRuleContext parent, int invokingState) {
6682 			super(parent, invokingState);
6683 		}
6684 		@Override public int getRuleIndex() { return RULE_simpleExpr; }
6685 		@Override
6686 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6687 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSimpleExpr(this);
6688 			else return visitor.visitChildren(this);
6689 		}
6690 	}
6691 
6692 	public final SimpleExprContext simpleExpr() throws RecognitionException {
6693 		return simpleExpr(0);
6694 	}
6695 
6696 	private SimpleExprContext simpleExpr(int _p) throws RecognitionException {
6697 		ParserRuleContext _parentctx = _ctx;
6698 		int _parentState = getState();
6699 		SimpleExprContext _localctx = new SimpleExprContext(_ctx, _parentState);
6700 		SimpleExprContext _prevctx = _localctx;
6701 		int _startState = 114;
6702 		enterRecursionRule(_localctx, 114, RULE_simpleExpr, _p);
6703 		int _la;
6704 		try {
6705 			int _alt;
6706 			enterOuterAlt(_localctx, 1);
6707 			{
6708 			setState(1486);
6709 			_errHandler.sync(this);
6710 			switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
6711 			case 1:
6712 				{
6713 				setState(1454);
6714 				functionCall();
6715 				}
6716 				break;
6717 			case 2:
6718 				{
6719 				setState(1455);
6720 				parameterMarker();
6721 				}
6722 				break;
6723 			case 3:
6724 				{
6725 				setState(1456);
6726 				literals();
6727 				}
6728 				break;
6729 			case 4:
6730 				{
6731 				setState(1457);
6732 				columnName();
6733 				}
6734 				break;
6735 			case 5:
6736 				{
6737 				setState(1458);
6738 				variableName();
6739 				}
6740 				break;
6741 			case 6:
6742 				{
6743 				setState(1459);
6744 				_la = _input.LA(1);
6745 				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_))) != 0) || _la==BINARY) ) {
6746 				_errHandler.recoverInline(this);
6747 				}
6748 				else {
6749 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6750 					_errHandler.reportMatch(this);
6751 					consume();
6752 				}
6753 				setState(1460);
6754 				simpleExpr(6);
6755 				}
6756 				break;
6757 			case 7:
6758 				{
6759 				setState(1462);
6760 				_errHandler.sync(this);
6761 				_la = _input.LA(1);
6762 				if (_la==ROW) {
6763 					{
6764 					setState(1461);
6765 					match(ROW);
6766 					}
6767 				}
6768 
6769 				setState(1464);
6770 				match(LP_);
6771 				setState(1465);
6772 				expr(0);
6773 				setState(1470);
6774 				_errHandler.sync(this);
6775 				_la = _input.LA(1);
6776 				while (_la==COMMA_) {
6777 					{
6778 					{
6779 					setState(1466);
6780 					match(COMMA_);
6781 					setState(1467);
6782 					expr(0);
6783 					}
6784 					}
6785 					setState(1472);
6786 					_errHandler.sync(this);
6787 					_la = _input.LA(1);
6788 				}
6789 				setState(1473);
6790 				match(RP_);
6791 				}
6792 				break;
6793 			case 8:
6794 				{
6795 				setState(1476);
6796 				_errHandler.sync(this);
6797 				_la = _input.LA(1);
6798 				if (_la==EXISTS) {
6799 					{
6800 					setState(1475);
6801 					match(EXISTS);
6802 					}
6803 				}
6804 
6805 				setState(1478);
6806 				subquery();
6807 				}
6808 				break;
6809 			case 9:
6810 				{
6811 				setState(1479);
6812 				match(LBE_);
6813 				setState(1480);
6814 				identifier();
6815 				setState(1481);
6816 				expr(0);
6817 				setState(1482);
6818 				match(RBE_);
6819 				}
6820 				break;
6821 			case 10:
6822 				{
6823 				setState(1484);
6824 				caseExpression();
6825 				}
6826 				break;
6827 			case 11:
6828 				{
6829 				setState(1485);
6830 				privateExprOfDb();
6831 				}
6832 				break;
6833 			}
6834 			_ctx.stop = _input.LT(-1);
6835 			setState(1493);
6836 			_errHandler.sync(this);
6837 			_alt = getInterpreter().adaptivePredict(_input,60,_ctx);
6838 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6839 				if ( _alt==1 ) {
6840 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6841 					_prevctx = _localctx;
6842 					{
6843 					{
6844 					_localctx = new SimpleExprContext(_parentctx, _parentState);
6845 					pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
6846 					setState(1488);
6847 					if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6848 					setState(1489);
6849 					match(OR_);
6850 					setState(1490);
6851 					simpleExpr(8);
6852 					}
6853 					} 
6854 				}
6855 				setState(1495);
6856 				_errHandler.sync(this);
6857 				_alt = getInterpreter().adaptivePredict(_input,60,_ctx);
6858 			}
6859 			}
6860 		}
6861 		catch (RecognitionException re) {
6862 			_localctx.exception = re;
6863 			_errHandler.reportError(this, re);
6864 			_errHandler.recover(this, re);
6865 		}
6866 		finally {
6867 			unrollRecursionContexts(_parentctx);
6868 		}
6869 		return _localctx;
6870 	}
6871 
6872 	public static class FunctionCallContext extends ParserRuleContext {
6873 		public AggregationFunctionContext aggregationFunction() {
6874 			return getRuleContext(AggregationFunctionContext.class,0);
6875 		}
6876 		public SpecialFunctionContext specialFunction() {
6877 			return getRuleContext(SpecialFunctionContext.class,0);
6878 		}
6879 		public RegularFunctionContext regularFunction() {
6880 			return getRuleContext(RegularFunctionContext.class,0);
6881 		}
6882 		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
6883 			super(parent, invokingState);
6884 		}
6885 		@Override public int getRuleIndex() { return RULE_functionCall; }
6886 		@Override
6887 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6888 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionCall(this);
6889 			else return visitor.visitChildren(this);
6890 		}
6891 	}
6892 
6893 	public final FunctionCallContext functionCall() throws RecognitionException {
6894 		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
6895 		enterRule(_localctx, 116, RULE_functionCall);
6896 		try {
6897 			setState(1499);
6898 			_errHandler.sync(this);
6899 			switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
6900 			case 1:
6901 				enterOuterAlt(_localctx, 1);
6902 				{
6903 				setState(1496);
6904 				aggregationFunction();
6905 				}
6906 				break;
6907 			case 2:
6908 				enterOuterAlt(_localctx, 2);
6909 				{
6910 				setState(1497);
6911 				specialFunction();
6912 				}
6913 				break;
6914 			case 3:
6915 				enterOuterAlt(_localctx, 3);
6916 				{
6917 				setState(1498);
6918 				regularFunction();
6919 				}
6920 				break;
6921 			}
6922 		}
6923 		catch (RecognitionException re) {
6924 			_localctx.exception = re;
6925 			_errHandler.reportError(this, re);
6926 			_errHandler.recover(this, re);
6927 		}
6928 		finally {
6929 			exitRule();
6930 		}
6931 		return _localctx;
6932 	}
6933 
6934 	public static class AggregationFunctionContext extends ParserRuleContext {
6935 		public AggregationFunctionNameContext aggregationFunctionName() {
6936 			return getRuleContext(AggregationFunctionNameContext.class,0);
6937 		}
6938 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6939 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6940 		public DistinctContext distinct() {
6941 			return getRuleContext(DistinctContext.class,0);
6942 		}
6943 		public List<ExprContext> expr() {
6944 			return getRuleContexts(ExprContext.class);
6945 		}
6946 		public ExprContext expr(int i) {
6947 			return getRuleContext(ExprContext.class,i);
6948 		}
6949 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6950 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6951 		public TerminalNode COMMA_(int i) {
6952 			return getToken(SQLServerStatementParser.COMMA_, i);
6953 		}
6954 		public AggregationFunctionContext(ParserRuleContext parent, int invokingState) {
6955 			super(parent, invokingState);
6956 		}
6957 		@Override public int getRuleIndex() { return RULE_aggregationFunction; }
6958 		@Override
6959 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6960 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunction(this);
6961 			else return visitor.visitChildren(this);
6962 		}
6963 	}
6964 
6965 	public final AggregationFunctionContext aggregationFunction() throws RecognitionException {
6966 		AggregationFunctionContext _localctx = new AggregationFunctionContext(_ctx, getState());
6967 		enterRule(_localctx, 118, RULE_aggregationFunction);
6968 		int _la;
6969 		try {
6970 			enterOuterAlt(_localctx, 1);
6971 			{
6972 			setState(1501);
6973 			aggregationFunctionName();
6974 			setState(1502);
6975 			match(LP_);
6976 			setState(1504);
6977 			_errHandler.sync(this);
6978 			_la = _input.LA(1);
6979 			if (_la==DISTINCT) {
6980 				{
6981 				setState(1503);
6982 				distinct();
6983 				}
6984 			}
6985 
6986 			setState(1515);
6987 			_errHandler.sync(this);
6988 			switch (_input.LA(1)) {
6989 			case NOT_:
6990 			case TILDE_:
6991 			case PLUS_:
6992 			case MINUS_:
6993 			case LP_:
6994 			case LBE_:
6995 			case QUESTION_:
6996 			case DOLLAR_:
6997 			case TRUNCATE:
6998 			case SCHEMA:
6999 			case COLUMNS:
7000 			case PRECISION:
7001 			case FUNCTION:
7002 			case TRIGGER:
7003 			case CASE:
7004 			case CAST:
7005 			case SUBSTRING:
7006 			case OFF:
7007 			case IF:
7008 			case NOT:
7009 			case NULL:
7010 			case TRUE:
7011 			case FALSE:
7012 			case EXISTS:
7013 			case GROUP:
7014 			case LIMIT:
7015 			case OFFSET:
7016 			case SAVEPOINT:
7017 			case BOOLEAN:
7018 			case CHAR:
7019 			case ARRAY:
7020 			case INTERVAL:
7021 			case DATE:
7022 			case TIME:
7023 			case TIMESTAMP:
7024 			case LOCALTIME:
7025 			case LOCALTIMESTAMP:
7026 			case QUARTER:
7027 			case WEEK:
7028 			case DAY:
7029 			case SECOND:
7030 			case MICROSECOND:
7031 			case MAX:
7032 			case MIN:
7033 			case SUM:
7034 			case COUNT:
7035 			case AVG:
7036 			case ENABLE:
7037 			case DISABLE:
7038 			case INSTANCE:
7039 			case DO:
7040 			case DEFINER:
7041 			case SQL:
7042 			case CASCADED:
7043 			case LOCAL:
7044 			case NEXT:
7045 			case NAME:
7046 			case INTEGER:
7047 			case TYPE:
7048 			case TEXT:
7049 			case VIEWS:
7050 			case READ_ONLY:
7051 			case DATABASE:
7052 			case RETURNS:
7053 			case DATEPART:
7054 			case PASSWORD:
7055 			case BINARY:
7056 			case HIDDEN_:
7057 			case MOD:
7058 			case PARTITION:
7059 			case PARTITIONS:
7060 			case TOP:
7061 			case ROW:
7062 			case ROWS:
7063 			case XOR:
7064 			case ALWAYS:
7065 			case ROLE:
7066 			case START:
7067 			case ALGORITHM:
7068 			case AUTO:
7069 			case BLOCKERS:
7070 			case CLUSTERED:
7071 			case NONCLUSTERED:
7072 			case COLUMNSTORE:
7073 			case CONTENT:
7074 			case CONVERT:
7075 			case YEARS:
7076 			case MONTHS:
7077 			case WEEKS:
7078 			case DAYS:
7079 			case MINUTES:
7080 			case DENY:
7081 			case DETERMINISTIC:
7082 			case DISTRIBUTION:
7083 			case DOCUMENT:
7084 			case DURABILITY:
7085 			case ENCRYPTED:
7086 			case FILESTREAM:
7087 			case FILETABLE:
7088 			case FILLFACTOR:
7089 			case FOLLOWING:
7090 			case HASH:
7091 			case HEAP:
7092 			case INBOUND:
7093 			case OUTBOUND:
7094 			case UNBOUNDED:
7095 			case INFINITE:
7096 			case LOGIN:
7097 			case MASKED:
7098 			case MAXDOP:
7099 			case MOVE:
7100 			case NOCHECK:
7101 			case OBJECT:
7102 			case ONLINE:
7103 			case OVER:
7104 			case PAGE:
7105 			case PAUSED:
7106 			case PERIOD:
7107 			case PERSISTED:
7108 			case PRECEDING:
7109 			case RANDOMIZED:
7110 			case RANGE:
7111 			case REBUILD:
7112 			case REPLICATE:
7113 			case REPLICATION:
7114 			case RESUMABLE:
7115 			case ROWGUIDCOL:
7116 			case SAVE:
7117 			case SELF:
7118 			case SPARSE:
7119 			case SWITCH:
7120 			case TRAN:
7121 			case TRANCOUNT:
7122 			case CONTROL:
7123 			case CONCAT:
7124 			case TAKE:
7125 			case OWNERSHIP:
7126 			case DEFINITION:
7127 			case APPLICATION:
7128 			case ASSEMBLY:
7129 			case SYMMETRIC:
7130 			case ASYMMETRIC:
7131 			case SERVER:
7132 			case RECEIVE:
7133 			case CHANGE:
7134 			case TRACE:
7135 			case TRACKING:
7136 			case RESOURCES:
7137 			case SETTINGS:
7138 			case STATE:
7139 			case AVAILABILITY:
7140 			case CREDENTIAL:
7141 			case ENDPOINT:
7142 			case EVENT:
7143 			case NOTIFICATION:
7144 			case LINKED:
7145 			case AUDIT:
7146 			case DDL:
7147 			case XML:
7148 			case IMPERSONATE:
7149 			case SECURABLES:
7150 			case AUTHENTICATE:
7151 			case EXTERNAL:
7152 			case ACCESS:
7153 			case ADMINISTER:
7154 			case BULK:
7155 			case OPERATIONS:
7156 			case UNSAFE:
7157 			case SHUTDOWN:
7158 			case SCOPED:
7159 			case CONFIGURATION:
7160 			case DATASPACE:
7161 			case SERVICE:
7162 			case CERTIFICATE:
7163 			case CONTRACT:
7164 			case ENCRYPTION:
7165 			case MASTER:
7166 			case DATA:
7167 			case SOURCE:
7168 			case FILE:
7169 			case FORMAT:
7170 			case LIBRARY:
7171 			case FULLTEXT:
7172 			case MASK:
7173 			case UNMASK:
7174 			case MESSAGE:
7175 			case REMOTE:
7176 			case BINDING:
7177 			case ROUTE:
7178 			case SECURITY:
7179 			case POLICY:
7180 			case AGGREGATE:
7181 			case QUEUE:
7182 			case RULE:
7183 			case SYNONYM:
7184 			case COLLECTION:
7185 			case SCRIPT:
7186 			case KILL:
7187 			case BACKUP:
7188 			case LOG:
7189 			case SHOWPLAN:
7190 			case SUBSCRIBE:
7191 			case QUERY:
7192 			case NOTIFICATIONS:
7193 			case CHECKPOINT:
7194 			case SEQUENCE:
7195 			case ABORT_AFTER_WAIT:
7196 			case ALLOW_PAGE_LOCKS:
7197 			case ALLOW_ROW_LOCKS:
7198 			case ALL_SPARSE_COLUMNS:
7199 			case BUCKET_COUNT:
7200 			case COLUMNSTORE_ARCHIVE:
7201 			case COLUMN_ENCRYPTION_KEY:
7202 			case COLUMN_SET:
7203 			case COMPRESSION_DELAY:
7204 			case DATABASE_DEAULT:
7205 			case DATA_COMPRESSION:
7206 			case DATA_CONSISTENCY_CHECK:
7207 			case ENCRYPTION_TYPE:
7208 			case SYSTEM_TIME:
7209 			case SYSTEM_VERSIONING:
7210 			case TEXTIMAGE_ON:
7211 			case WAIT_AT_LOW_PRIORITY:
7212 			case STATISTICS_INCREMENTAL:
7213 			case STATISTICS_NORECOMPUTE:
7214 			case ROUND_ROBIN:
7215 			case SCHEMA_AND_DATA:
7216 			case SCHEMA_ONLY:
7217 			case SORT_IN_TEMPDB:
7218 			case IGNORE_DUP_KEY:
7219 			case IMPLICIT_TRANSACTIONS:
7220 			case MAX_DURATION:
7221 			case MEMORY_OPTIMIZED:
7222 			case MIGRATION_STATE:
7223 			case PAD_INDEX:
7224 			case REMOTE_DATA_ARCHIVE:
7225 			case FILESTREAM_ON:
7226 			case FILETABLE_COLLATE_FILENAME:
7227 			case FILETABLE_DIRECTORY:
7228 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
7229 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
7230 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
7231 			case FILTER_PREDICATE:
7232 			case HISTORY_RETENTION_PERIOD:
7233 			case HISTORY_TABLE:
7234 			case LOCK_ESCALATION:
7235 			case DROP_EXISTING:
7236 			case ROW_NUMBER:
7237 			case FIRST:
7238 			case DATETIME2:
7239 			case OUTPUT:
7240 			case INSERTED:
7241 			case DELETED:
7242 			case FILENAME:
7243 			case MAXSIZE:
7244 			case FILEGROWTH:
7245 			case UNLIMITED:
7246 			case KB:
7247 			case MB:
7248 			case GB:
7249 			case TB:
7250 			case MEMORY_OPTIMIZED_DATA:
7251 			case FILEGROUP:
7252 			case NON_TRANSACTED_ACCESS:
7253 			case DB_CHAINING:
7254 			case TRUSTWORTHY:
7255 			case FORWARD_ONLY:
7256 			case KEYSET:
7257 			case FAST_FORWARD:
7258 			case SCROLL_LOCKS:
7259 			case OPTIMISTIC:
7260 			case TYPE_WARNING:
7261 			case SCHEMABINDING:
7262 			case CALLER:
7263 			case OWNER:
7264 			case SNAPSHOT:
7265 			case REPEATABLE:
7266 			case SERIALIZABLE:
7267 			case NATIVE_COMPILATION:
7268 			case VIEW_METADATA:
7269 			case INSTEAD:
7270 			case APPEND:
7271 			case INCREMENT:
7272 			case CACHE:
7273 			case MINVALUE:
7274 			case MAXVALUE:
7275 			case RESTART:
7276 			case LOB_COMPACTION:
7277 			case COMPRESS_ALL_ROW_GROUPS:
7278 			case REORGANIZE:
7279 			case RESUME:
7280 			case PAUSE:
7281 			case ABORT:
7282 			case ACCELERATED_DATABASE_RECOVERY:
7283 			case PERSISTENT_VERSION_STORE_FILEGROUP:
7284 			case IMMEDIATE:
7285 			case NO_WAIT:
7286 			case TARGET_RECOVERY_TIME:
7287 			case SECONDS:
7288 			case HONOR_BROKER_PRIORITY:
7289 			case ERROR_BROKER_CONVERSATIONS:
7290 			case NEW_BROKER:
7291 			case DISABLE_BROKER:
7292 			case ENABLE_BROKER:
7293 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
7294 			case READ_COMMITTED_SNAPSHOT:
7295 			case ALLOW_SNAPSHOT_ISOLATION:
7296 			case RECURSIVE_TRIGGERS:
7297 			case QUOTED_IDENTIFIER:
7298 			case NUMERIC_ROUNDABORT:
7299 			case CONCAT_NULL_YIELDS_NULL:
7300 			case COMPATIBILITY_LEVEL:
7301 			case ARITHABORT:
7302 			case ANSI_WARNINGS:
7303 			case ANSI_PADDING:
7304 			case ANSI_NULLS:
7305 			case ANSI_NULL_DEFAULT:
7306 			case PAGE_VERIFY:
7307 			case CHECKSUM:
7308 			case TORN_PAGE_DETECTION:
7309 			case BULK_LOGGED:
7310 			case RECOVERY:
7311 			case TOTAL_EXECUTION_CPU_TIME_MS:
7312 			case TOTAL_COMPILE_CPU_TIME_MS:
7313 			case STALE_CAPTURE_POLICY_THRESHOLD:
7314 			case EXECUTION_COUNT:
7315 			case QUERY_CAPTURE_POLICY:
7316 			case WAIT_STATS_CAPTURE_MODE:
7317 			case MAX_PLANS_PER_QUERY:
7318 			case QUERY_CAPTURE_MODE:
7319 			case SIZE_BASED_CLEANUP_MODE:
7320 			case INTERVAL_LENGTH_MINUTES:
7321 			case MAX_STORAGE_SIZE_MB:
7322 			case DATA_FLUSH_INTERVAL_SECONDS:
7323 			case CLEANUP_POLICY:
7324 			case CUSTOM:
7325 			case STALE_QUERY_THRESHOLD_DAYS:
7326 			case OPERATION_MODE:
7327 			case QUERY_STORE:
7328 			case CURSOR_DEFAULT:
7329 			case GLOBAL:
7330 			case CURSOR_CLOSE_ON_COMMIT:
7331 			case HOURS:
7332 			case CHANGE_RETENTION:
7333 			case AUTO_CLEANUP:
7334 			case CHANGE_TRACKING:
7335 			case AUTOMATIC_TUNING:
7336 			case FORCE_LAST_GOOD_PLAN:
7337 			case AUTO_UPDATE_STATISTICS_ASYNC:
7338 			case AUTO_UPDATE_STATISTICS:
7339 			case AUTO_SHRINK:
7340 			case AUTO_CREATE_STATISTICS:
7341 			case INCREMENTAL:
7342 			case AUTO_CLOSE:
7343 			case DATA_RETENTION:
7344 			case TEMPORAL_HISTORY_RETENTION:
7345 			case EDITION:
7346 			case MIXED_PAGE_ALLOCATION:
7347 			case DISABLED:
7348 			case ALLOWED:
7349 			case HADR:
7350 			case MULTI_USER:
7351 			case RESTRICTED_USER:
7352 			case SINGLE_USER:
7353 			case OFFLINE:
7354 			case EMERGENCY:
7355 			case SUSPEND:
7356 			case DATE_CORRELATION_OPTIMIZATION:
7357 			case ELASTIC_POOL:
7358 			case SERVICE_OBJECTIVE:
7359 			case DATABASE_NAME:
7360 			case ALLOW_CONNECTIONS:
7361 			case GEO:
7362 			case NAMED:
7363 			case DATEFIRST:
7364 			case BACKUP_STORAGE_REDUNDANCY:
7365 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
7366 			case SECONDARY:
7367 			case FAILOVER:
7368 			case DEFAULT_FULLTEXT_LANGUAGE:
7369 			case DEFAULT_LANGUAGE:
7370 			case INLINE:
7371 			case NESTED_TRIGGERS:
7372 			case TRANSFORM_NOISE_WORDS:
7373 			case TWO_DIGIT_YEAR_CUTOFF:
7374 			case PERSISTENT_LOG_BUFFER:
7375 			case DIRECTORY_NAME:
7376 			case DATEFORMAT:
7377 			case DELAYED_DURABILITY:
7378 			case AUTHORIZATION:
7379 			case TRANSFER:
7380 			case PROVIDER:
7381 			case SEARCH:
7382 			case MEMBER:
7383 			case IDENTIFIER_:
7384 			case DELIMITED_IDENTIFIER_:
7385 			case STRING_:
7386 			case NUMBER_:
7387 			case HEX_DIGIT_:
7388 			case BIT_NUM_:
7389 			case NCHAR_TEXT:
7390 				{
7391 				setState(1506);
7392 				expr(0);
7393 				setState(1511);
7394 				_errHandler.sync(this);
7395 				_la = _input.LA(1);
7396 				while (_la==COMMA_) {
7397 					{
7398 					{
7399 					setState(1507);
7400 					match(COMMA_);
7401 					setState(1508);
7402 					expr(0);
7403 					}
7404 					}
7405 					setState(1513);
7406 					_errHandler.sync(this);
7407 					_la = _input.LA(1);
7408 				}
7409 				}
7410 				break;
7411 			case ASTERISK_:
7412 				{
7413 				setState(1514);
7414 				match(ASTERISK_);
7415 				}
7416 				break;
7417 			case RP_:
7418 				break;
7419 			default:
7420 				break;
7421 			}
7422 			setState(1517);
7423 			match(RP_);
7424 			}
7425 		}
7426 		catch (RecognitionException re) {
7427 			_localctx.exception = re;
7428 			_errHandler.reportError(this, re);
7429 			_errHandler.recover(this, re);
7430 		}
7431 		finally {
7432 			exitRule();
7433 		}
7434 		return _localctx;
7435 	}
7436 
7437 	public static class AggregationFunctionNameContext extends ParserRuleContext {
7438 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
7439 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
7440 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
7441 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
7442 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
7443 		public AggregationFunctionNameContext(ParserRuleContext parent, int invokingState) {
7444 			super(parent, invokingState);
7445 		}
7446 		@Override public int getRuleIndex() { return RULE_aggregationFunctionName; }
7447 		@Override
7448 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7449 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunctionName(this);
7450 			else return visitor.visitChildren(this);
7451 		}
7452 	}
7453 
7454 	public final AggregationFunctionNameContext aggregationFunctionName() throws RecognitionException {
7455 		AggregationFunctionNameContext _localctx = new AggregationFunctionNameContext(_ctx, getState());
7456 		enterRule(_localctx, 120, RULE_aggregationFunctionName);
7457 		int _la;
7458 		try {
7459 			enterOuterAlt(_localctx, 1);
7460 			{
7461 			setState(1519);
7462 			_la = _input.LA(1);
7463 			if ( !(((((_la - 149)) & ~0x3f) == 0 && ((1L << (_la - 149)) & ((1L << (MAX - 149)) | (1L << (MIN - 149)) | (1L << (SUM - 149)) | (1L << (COUNT - 149)) | (1L << (AVG - 149)))) != 0)) ) {
7464 			_errHandler.recoverInline(this);
7465 			}
7466 			else {
7467 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7468 				_errHandler.reportMatch(this);
7469 				consume();
7470 			}
7471 			}
7472 		}
7473 		catch (RecognitionException re) {
7474 			_localctx.exception = re;
7475 			_errHandler.reportError(this, re);
7476 			_errHandler.recover(this, re);
7477 		}
7478 		finally {
7479 			exitRule();
7480 		}
7481 		return _localctx;
7482 	}
7483 
7484 	public static class DistinctContext extends ParserRuleContext {
7485 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
7486 		public DistinctContext(ParserRuleContext parent, int invokingState) {
7487 			super(parent, invokingState);
7488 		}
7489 		@Override public int getRuleIndex() { return RULE_distinct; }
7490 		@Override
7491 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7492 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinct(this);
7493 			else return visitor.visitChildren(this);
7494 		}
7495 	}
7496 
7497 	public final DistinctContext distinct() throws RecognitionException {
7498 		DistinctContext _localctx = new DistinctContext(_ctx, getState());
7499 		enterRule(_localctx, 122, RULE_distinct);
7500 		try {
7501 			enterOuterAlt(_localctx, 1);
7502 			{
7503 			setState(1521);
7504 			match(DISTINCT);
7505 			}
7506 		}
7507 		catch (RecognitionException re) {
7508 			_localctx.exception = re;
7509 			_errHandler.reportError(this, re);
7510 			_errHandler.recover(this, re);
7511 		}
7512 		finally {
7513 			exitRule();
7514 		}
7515 		return _localctx;
7516 	}
7517 
7518 	public static class SpecialFunctionContext extends ParserRuleContext {
7519 		public CastFunctionContext castFunction() {
7520 			return getRuleContext(CastFunctionContext.class,0);
7521 		}
7522 		public CharFunctionContext charFunction() {
7523 			return getRuleContext(CharFunctionContext.class,0);
7524 		}
7525 		public ConvertFunctionContext convertFunction() {
7526 			return getRuleContext(ConvertFunctionContext.class,0);
7527 		}
7528 		public SpecialFunctionContext(ParserRuleContext parent, int invokingState) {
7529 			super(parent, invokingState);
7530 		}
7531 		@Override public int getRuleIndex() { return RULE_specialFunction; }
7532 		@Override
7533 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7534 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSpecialFunction(this);
7535 			else return visitor.visitChildren(this);
7536 		}
7537 	}
7538 
7539 	public final SpecialFunctionContext specialFunction() throws RecognitionException {
7540 		SpecialFunctionContext _localctx = new SpecialFunctionContext(_ctx, getState());
7541 		enterRule(_localctx, 124, RULE_specialFunction);
7542 		try {
7543 			setState(1526);
7544 			_errHandler.sync(this);
7545 			switch (_input.LA(1)) {
7546 			case CAST:
7547 				enterOuterAlt(_localctx, 1);
7548 				{
7549 				setState(1523);
7550 				castFunction();
7551 				}
7552 				break;
7553 			case CHAR:
7554 				enterOuterAlt(_localctx, 2);
7555 				{
7556 				setState(1524);
7557 				charFunction();
7558 				}
7559 				break;
7560 			case CONVERT:
7561 				enterOuterAlt(_localctx, 3);
7562 				{
7563 				setState(1525);
7564 				convertFunction();
7565 				}
7566 				break;
7567 			default:
7568 				throw new NoViableAltException(this);
7569 			}
7570 		}
7571 		catch (RecognitionException re) {
7572 			_localctx.exception = re;
7573 			_errHandler.reportError(this, re);
7574 			_errHandler.recover(this, re);
7575 		}
7576 		finally {
7577 			exitRule();
7578 		}
7579 		return _localctx;
7580 	}
7581 
7582 	public static class CastFunctionContext extends ParserRuleContext {
7583 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
7584 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7585 		public ExprContext expr() {
7586 			return getRuleContext(ExprContext.class,0);
7587 		}
7588 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
7589 		public DataTypeContext dataType() {
7590 			return getRuleContext(DataTypeContext.class,0);
7591 		}
7592 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7593 		public CastFunctionContext(ParserRuleContext parent, int invokingState) {
7594 			super(parent, invokingState);
7595 		}
7596 		@Override public int getRuleIndex() { return RULE_castFunction; }
7597 		@Override
7598 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7599 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastFunction(this);
7600 			else return visitor.visitChildren(this);
7601 		}
7602 	}
7603 
7604 	public final CastFunctionContext castFunction() throws RecognitionException {
7605 		CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
7606 		enterRule(_localctx, 126, RULE_castFunction);
7607 		try {
7608 			enterOuterAlt(_localctx, 1);
7609 			{
7610 			setState(1528);
7611 			match(CAST);
7612 			setState(1529);
7613 			match(LP_);
7614 			setState(1530);
7615 			expr(0);
7616 			setState(1531);
7617 			match(AS);
7618 			setState(1532);
7619 			dataType();
7620 			setState(1533);
7621 			match(RP_);
7622 			}
7623 		}
7624 		catch (RecognitionException re) {
7625 			_localctx.exception = re;
7626 			_errHandler.reportError(this, re);
7627 			_errHandler.recover(this, re);
7628 		}
7629 		finally {
7630 			exitRule();
7631 		}
7632 		return _localctx;
7633 	}
7634 
7635 	public static class ConvertFunctionContext extends ParserRuleContext {
7636 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
7637 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7638 		public DataTypeContext dataType() {
7639 			return getRuleContext(DataTypeContext.class,0);
7640 		}
7641 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7642 		public TerminalNode COMMA_(int i) {
7643 			return getToken(SQLServerStatementParser.COMMA_, i);
7644 		}
7645 		public ExprContext expr() {
7646 			return getRuleContext(ExprContext.class,0);
7647 		}
7648 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7649 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
7650 		public ConvertFunctionContext(ParserRuleContext parent, int invokingState) {
7651 			super(parent, invokingState);
7652 		}
7653 		@Override public int getRuleIndex() { return RULE_convertFunction; }
7654 		@Override
7655 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7656 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertFunction(this);
7657 			else return visitor.visitChildren(this);
7658 		}
7659 	}
7660 
7661 	public final ConvertFunctionContext convertFunction() throws RecognitionException {
7662 		ConvertFunctionContext _localctx = new ConvertFunctionContext(_ctx, getState());
7663 		enterRule(_localctx, 128, RULE_convertFunction);
7664 		int _la;
7665 		try {
7666 			enterOuterAlt(_localctx, 1);
7667 			{
7668 			setState(1535);
7669 			match(CONVERT);
7670 			setState(1536);
7671 			match(LP_);
7672 			setState(1537);
7673 			dataType();
7674 			setState(1538);
7675 			match(COMMA_);
7676 			setState(1539);
7677 			expr(0);
7678 			setState(1542);
7679 			_errHandler.sync(this);
7680 			_la = _input.LA(1);
7681 			if (_la==COMMA_) {
7682 				{
7683 				setState(1540);
7684 				match(COMMA_);
7685 				setState(1541);
7686 				match(NUMBER_);
7687 				}
7688 			}
7689 
7690 			setState(1544);
7691 			match(RP_);
7692 			}
7693 		}
7694 		catch (RecognitionException re) {
7695 			_localctx.exception = re;
7696 			_errHandler.reportError(this, re);
7697 			_errHandler.recover(this, re);
7698 		}
7699 		finally {
7700 			exitRule();
7701 		}
7702 		return _localctx;
7703 	}
7704 
7705 	public static class CharFunctionContext extends ParserRuleContext {
7706 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
7707 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7708 		public List<ExprContext> expr() {
7709 			return getRuleContexts(ExprContext.class);
7710 		}
7711 		public ExprContext expr(int i) {
7712 			return getRuleContext(ExprContext.class,i);
7713 		}
7714 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7715 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7716 		public TerminalNode COMMA_(int i) {
7717 			return getToken(SQLServerStatementParser.COMMA_, i);
7718 		}
7719 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
7720 		public IgnoredIdentifierContext ignoredIdentifier() {
7721 			return getRuleContext(IgnoredIdentifierContext.class,0);
7722 		}
7723 		public CharFunctionContext(ParserRuleContext parent, int invokingState) {
7724 			super(parent, invokingState);
7725 		}
7726 		@Override public int getRuleIndex() { return RULE_charFunction; }
7727 		@Override
7728 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7729 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCharFunction(this);
7730 			else return visitor.visitChildren(this);
7731 		}
7732 	}
7733 
7734 	public final CharFunctionContext charFunction() throws RecognitionException {
7735 		CharFunctionContext _localctx = new CharFunctionContext(_ctx, getState());
7736 		enterRule(_localctx, 130, RULE_charFunction);
7737 		int _la;
7738 		try {
7739 			enterOuterAlt(_localctx, 1);
7740 			{
7741 			setState(1546);
7742 			match(CHAR);
7743 			setState(1547);
7744 			match(LP_);
7745 			setState(1548);
7746 			expr(0);
7747 			setState(1553);
7748 			_errHandler.sync(this);
7749 			_la = _input.LA(1);
7750 			while (_la==COMMA_) {
7751 				{
7752 				{
7753 				setState(1549);
7754 				match(COMMA_);
7755 				setState(1550);
7756 				expr(0);
7757 				}
7758 				}
7759 				setState(1555);
7760 				_errHandler.sync(this);
7761 				_la = _input.LA(1);
7762 			}
7763 			setState(1558);
7764 			_errHandler.sync(this);
7765 			_la = _input.LA(1);
7766 			if (_la==USING) {
7767 				{
7768 				setState(1556);
7769 				match(USING);
7770 				setState(1557);
7771 				ignoredIdentifier();
7772 				}
7773 			}
7774 
7775 			setState(1560);
7776 			match(RP_);
7777 			}
7778 		}
7779 		catch (RecognitionException re) {
7780 			_localctx.exception = re;
7781 			_errHandler.reportError(this, re);
7782 			_errHandler.recover(this, re);
7783 		}
7784 		finally {
7785 			exitRule();
7786 		}
7787 		return _localctx;
7788 	}
7789 
7790 	public static class RegularFunctionContext extends ParserRuleContext {
7791 		public RegularFunctionNameContext regularFunctionName() {
7792 			return getRuleContext(RegularFunctionNameContext.class,0);
7793 		}
7794 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7795 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7796 		public List<ExprContext> expr() {
7797 			return getRuleContexts(ExprContext.class);
7798 		}
7799 		public ExprContext expr(int i) {
7800 			return getRuleContext(ExprContext.class,i);
7801 		}
7802 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
7803 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7804 		public TerminalNode COMMA_(int i) {
7805 			return getToken(SQLServerStatementParser.COMMA_, i);
7806 		}
7807 		public RegularFunctionContext(ParserRuleContext parent, int invokingState) {
7808 			super(parent, invokingState);
7809 		}
7810 		@Override public int getRuleIndex() { return RULE_regularFunction; }
7811 		@Override
7812 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7813 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunction(this);
7814 			else return visitor.visitChildren(this);
7815 		}
7816 	}
7817 
7818 	public final RegularFunctionContext regularFunction() throws RecognitionException {
7819 		RegularFunctionContext _localctx = new RegularFunctionContext(_ctx, getState());
7820 		enterRule(_localctx, 132, RULE_regularFunction);
7821 		int _la;
7822 		try {
7823 			enterOuterAlt(_localctx, 1);
7824 			{
7825 			setState(1562);
7826 			regularFunctionName();
7827 			setState(1563);
7828 			match(LP_);
7829 			setState(1573);
7830 			_errHandler.sync(this);
7831 			switch (_input.LA(1)) {
7832 			case NOT_:
7833 			case TILDE_:
7834 			case PLUS_:
7835 			case MINUS_:
7836 			case LP_:
7837 			case LBE_:
7838 			case QUESTION_:
7839 			case DOLLAR_:
7840 			case TRUNCATE:
7841 			case SCHEMA:
7842 			case COLUMNS:
7843 			case PRECISION:
7844 			case FUNCTION:
7845 			case TRIGGER:
7846 			case CASE:
7847 			case CAST:
7848 			case SUBSTRING:
7849 			case OFF:
7850 			case IF:
7851 			case NOT:
7852 			case NULL:
7853 			case TRUE:
7854 			case FALSE:
7855 			case EXISTS:
7856 			case GROUP:
7857 			case LIMIT:
7858 			case OFFSET:
7859 			case SAVEPOINT:
7860 			case BOOLEAN:
7861 			case CHAR:
7862 			case ARRAY:
7863 			case INTERVAL:
7864 			case DATE:
7865 			case TIME:
7866 			case TIMESTAMP:
7867 			case LOCALTIME:
7868 			case LOCALTIMESTAMP:
7869 			case QUARTER:
7870 			case WEEK:
7871 			case DAY:
7872 			case SECOND:
7873 			case MICROSECOND:
7874 			case MAX:
7875 			case MIN:
7876 			case SUM:
7877 			case COUNT:
7878 			case AVG:
7879 			case ENABLE:
7880 			case DISABLE:
7881 			case INSTANCE:
7882 			case DO:
7883 			case DEFINER:
7884 			case SQL:
7885 			case CASCADED:
7886 			case LOCAL:
7887 			case NEXT:
7888 			case NAME:
7889 			case INTEGER:
7890 			case TYPE:
7891 			case TEXT:
7892 			case VIEWS:
7893 			case READ_ONLY:
7894 			case DATABASE:
7895 			case RETURNS:
7896 			case DATEPART:
7897 			case PASSWORD:
7898 			case BINARY:
7899 			case HIDDEN_:
7900 			case MOD:
7901 			case PARTITION:
7902 			case PARTITIONS:
7903 			case TOP:
7904 			case ROW:
7905 			case ROWS:
7906 			case XOR:
7907 			case ALWAYS:
7908 			case ROLE:
7909 			case START:
7910 			case ALGORITHM:
7911 			case AUTO:
7912 			case BLOCKERS:
7913 			case CLUSTERED:
7914 			case NONCLUSTERED:
7915 			case COLUMNSTORE:
7916 			case CONTENT:
7917 			case CONVERT:
7918 			case YEARS:
7919 			case MONTHS:
7920 			case WEEKS:
7921 			case DAYS:
7922 			case MINUTES:
7923 			case DENY:
7924 			case DETERMINISTIC:
7925 			case DISTRIBUTION:
7926 			case DOCUMENT:
7927 			case DURABILITY:
7928 			case ENCRYPTED:
7929 			case FILESTREAM:
7930 			case FILETABLE:
7931 			case FILLFACTOR:
7932 			case FOLLOWING:
7933 			case HASH:
7934 			case HEAP:
7935 			case INBOUND:
7936 			case OUTBOUND:
7937 			case UNBOUNDED:
7938 			case INFINITE:
7939 			case LOGIN:
7940 			case MASKED:
7941 			case MAXDOP:
7942 			case MOVE:
7943 			case NOCHECK:
7944 			case OBJECT:
7945 			case ONLINE:
7946 			case OVER:
7947 			case PAGE:
7948 			case PAUSED:
7949 			case PERIOD:
7950 			case PERSISTED:
7951 			case PRECEDING:
7952 			case RANDOMIZED:
7953 			case RANGE:
7954 			case REBUILD:
7955 			case REPLICATE:
7956 			case REPLICATION:
7957 			case RESUMABLE:
7958 			case ROWGUIDCOL:
7959 			case SAVE:
7960 			case SELF:
7961 			case SPARSE:
7962 			case SWITCH:
7963 			case TRAN:
7964 			case TRANCOUNT:
7965 			case CONTROL:
7966 			case CONCAT:
7967 			case TAKE:
7968 			case OWNERSHIP:
7969 			case DEFINITION:
7970 			case APPLICATION:
7971 			case ASSEMBLY:
7972 			case SYMMETRIC:
7973 			case ASYMMETRIC:
7974 			case SERVER:
7975 			case RECEIVE:
7976 			case CHANGE:
7977 			case TRACE:
7978 			case TRACKING:
7979 			case RESOURCES:
7980 			case SETTINGS:
7981 			case STATE:
7982 			case AVAILABILITY:
7983 			case CREDENTIAL:
7984 			case ENDPOINT:
7985 			case EVENT:
7986 			case NOTIFICATION:
7987 			case LINKED:
7988 			case AUDIT:
7989 			case DDL:
7990 			case XML:
7991 			case IMPERSONATE:
7992 			case SECURABLES:
7993 			case AUTHENTICATE:
7994 			case EXTERNAL:
7995 			case ACCESS:
7996 			case ADMINISTER:
7997 			case BULK:
7998 			case OPERATIONS:
7999 			case UNSAFE:
8000 			case SHUTDOWN:
8001 			case SCOPED:
8002 			case CONFIGURATION:
8003 			case DATASPACE:
8004 			case SERVICE:
8005 			case CERTIFICATE:
8006 			case CONTRACT:
8007 			case ENCRYPTION:
8008 			case MASTER:
8009 			case DATA:
8010 			case SOURCE:
8011 			case FILE:
8012 			case FORMAT:
8013 			case LIBRARY:
8014 			case FULLTEXT:
8015 			case MASK:
8016 			case UNMASK:
8017 			case MESSAGE:
8018 			case REMOTE:
8019 			case BINDING:
8020 			case ROUTE:
8021 			case SECURITY:
8022 			case POLICY:
8023 			case AGGREGATE:
8024 			case QUEUE:
8025 			case RULE:
8026 			case SYNONYM:
8027 			case COLLECTION:
8028 			case SCRIPT:
8029 			case KILL:
8030 			case BACKUP:
8031 			case LOG:
8032 			case SHOWPLAN:
8033 			case SUBSCRIBE:
8034 			case QUERY:
8035 			case NOTIFICATIONS:
8036 			case CHECKPOINT:
8037 			case SEQUENCE:
8038 			case ABORT_AFTER_WAIT:
8039 			case ALLOW_PAGE_LOCKS:
8040 			case ALLOW_ROW_LOCKS:
8041 			case ALL_SPARSE_COLUMNS:
8042 			case BUCKET_COUNT:
8043 			case COLUMNSTORE_ARCHIVE:
8044 			case COLUMN_ENCRYPTION_KEY:
8045 			case COLUMN_SET:
8046 			case COMPRESSION_DELAY:
8047 			case DATABASE_DEAULT:
8048 			case DATA_COMPRESSION:
8049 			case DATA_CONSISTENCY_CHECK:
8050 			case ENCRYPTION_TYPE:
8051 			case SYSTEM_TIME:
8052 			case SYSTEM_VERSIONING:
8053 			case TEXTIMAGE_ON:
8054 			case WAIT_AT_LOW_PRIORITY:
8055 			case STATISTICS_INCREMENTAL:
8056 			case STATISTICS_NORECOMPUTE:
8057 			case ROUND_ROBIN:
8058 			case SCHEMA_AND_DATA:
8059 			case SCHEMA_ONLY:
8060 			case SORT_IN_TEMPDB:
8061 			case IGNORE_DUP_KEY:
8062 			case IMPLICIT_TRANSACTIONS:
8063 			case MAX_DURATION:
8064 			case MEMORY_OPTIMIZED:
8065 			case MIGRATION_STATE:
8066 			case PAD_INDEX:
8067 			case REMOTE_DATA_ARCHIVE:
8068 			case FILESTREAM_ON:
8069 			case FILETABLE_COLLATE_FILENAME:
8070 			case FILETABLE_DIRECTORY:
8071 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
8072 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
8073 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
8074 			case FILTER_PREDICATE:
8075 			case HISTORY_RETENTION_PERIOD:
8076 			case HISTORY_TABLE:
8077 			case LOCK_ESCALATION:
8078 			case DROP_EXISTING:
8079 			case ROW_NUMBER:
8080 			case FIRST:
8081 			case DATETIME2:
8082 			case OUTPUT:
8083 			case INSERTED:
8084 			case DELETED:
8085 			case FILENAME:
8086 			case MAXSIZE:
8087 			case FILEGROWTH:
8088 			case UNLIMITED:
8089 			case KB:
8090 			case MB:
8091 			case GB:
8092 			case TB:
8093 			case MEMORY_OPTIMIZED_DATA:
8094 			case FILEGROUP:
8095 			case NON_TRANSACTED_ACCESS:
8096 			case DB_CHAINING:
8097 			case TRUSTWORTHY:
8098 			case FORWARD_ONLY:
8099 			case KEYSET:
8100 			case FAST_FORWARD:
8101 			case SCROLL_LOCKS:
8102 			case OPTIMISTIC:
8103 			case TYPE_WARNING:
8104 			case SCHEMABINDING:
8105 			case CALLER:
8106 			case OWNER:
8107 			case SNAPSHOT:
8108 			case REPEATABLE:
8109 			case SERIALIZABLE:
8110 			case NATIVE_COMPILATION:
8111 			case VIEW_METADATA:
8112 			case INSTEAD:
8113 			case APPEND:
8114 			case INCREMENT:
8115 			case CACHE:
8116 			case MINVALUE:
8117 			case MAXVALUE:
8118 			case RESTART:
8119 			case LOB_COMPACTION:
8120 			case COMPRESS_ALL_ROW_GROUPS:
8121 			case REORGANIZE:
8122 			case RESUME:
8123 			case PAUSE:
8124 			case ABORT:
8125 			case ACCELERATED_DATABASE_RECOVERY:
8126 			case PERSISTENT_VERSION_STORE_FILEGROUP:
8127 			case IMMEDIATE:
8128 			case NO_WAIT:
8129 			case TARGET_RECOVERY_TIME:
8130 			case SECONDS:
8131 			case HONOR_BROKER_PRIORITY:
8132 			case ERROR_BROKER_CONVERSATIONS:
8133 			case NEW_BROKER:
8134 			case DISABLE_BROKER:
8135 			case ENABLE_BROKER:
8136 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
8137 			case READ_COMMITTED_SNAPSHOT:
8138 			case ALLOW_SNAPSHOT_ISOLATION:
8139 			case RECURSIVE_TRIGGERS:
8140 			case QUOTED_IDENTIFIER:
8141 			case NUMERIC_ROUNDABORT:
8142 			case CONCAT_NULL_YIELDS_NULL:
8143 			case COMPATIBILITY_LEVEL:
8144 			case ARITHABORT:
8145 			case ANSI_WARNINGS:
8146 			case ANSI_PADDING:
8147 			case ANSI_NULLS:
8148 			case ANSI_NULL_DEFAULT:
8149 			case PAGE_VERIFY:
8150 			case CHECKSUM:
8151 			case TORN_PAGE_DETECTION:
8152 			case BULK_LOGGED:
8153 			case RECOVERY:
8154 			case TOTAL_EXECUTION_CPU_TIME_MS:
8155 			case TOTAL_COMPILE_CPU_TIME_MS:
8156 			case STALE_CAPTURE_POLICY_THRESHOLD:
8157 			case EXECUTION_COUNT:
8158 			case QUERY_CAPTURE_POLICY:
8159 			case WAIT_STATS_CAPTURE_MODE:
8160 			case MAX_PLANS_PER_QUERY:
8161 			case QUERY_CAPTURE_MODE:
8162 			case SIZE_BASED_CLEANUP_MODE:
8163 			case INTERVAL_LENGTH_MINUTES:
8164 			case MAX_STORAGE_SIZE_MB:
8165 			case DATA_FLUSH_INTERVAL_SECONDS:
8166 			case CLEANUP_POLICY:
8167 			case CUSTOM:
8168 			case STALE_QUERY_THRESHOLD_DAYS:
8169 			case OPERATION_MODE:
8170 			case QUERY_STORE:
8171 			case CURSOR_DEFAULT:
8172 			case GLOBAL:
8173 			case CURSOR_CLOSE_ON_COMMIT:
8174 			case HOURS:
8175 			case CHANGE_RETENTION:
8176 			case AUTO_CLEANUP:
8177 			case CHANGE_TRACKING:
8178 			case AUTOMATIC_TUNING:
8179 			case FORCE_LAST_GOOD_PLAN:
8180 			case AUTO_UPDATE_STATISTICS_ASYNC:
8181 			case AUTO_UPDATE_STATISTICS:
8182 			case AUTO_SHRINK:
8183 			case AUTO_CREATE_STATISTICS:
8184 			case INCREMENTAL:
8185 			case AUTO_CLOSE:
8186 			case DATA_RETENTION:
8187 			case TEMPORAL_HISTORY_RETENTION:
8188 			case EDITION:
8189 			case MIXED_PAGE_ALLOCATION:
8190 			case DISABLED:
8191 			case ALLOWED:
8192 			case HADR:
8193 			case MULTI_USER:
8194 			case RESTRICTED_USER:
8195 			case SINGLE_USER:
8196 			case OFFLINE:
8197 			case EMERGENCY:
8198 			case SUSPEND:
8199 			case DATE_CORRELATION_OPTIMIZATION:
8200 			case ELASTIC_POOL:
8201 			case SERVICE_OBJECTIVE:
8202 			case DATABASE_NAME:
8203 			case ALLOW_CONNECTIONS:
8204 			case GEO:
8205 			case NAMED:
8206 			case DATEFIRST:
8207 			case BACKUP_STORAGE_REDUNDANCY:
8208 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
8209 			case SECONDARY:
8210 			case FAILOVER:
8211 			case DEFAULT_FULLTEXT_LANGUAGE:
8212 			case DEFAULT_LANGUAGE:
8213 			case INLINE:
8214 			case NESTED_TRIGGERS:
8215 			case TRANSFORM_NOISE_WORDS:
8216 			case TWO_DIGIT_YEAR_CUTOFF:
8217 			case PERSISTENT_LOG_BUFFER:
8218 			case DIRECTORY_NAME:
8219 			case DATEFORMAT:
8220 			case DELAYED_DURABILITY:
8221 			case AUTHORIZATION:
8222 			case TRANSFER:
8223 			case PROVIDER:
8224 			case SEARCH:
8225 			case MEMBER:
8226 			case IDENTIFIER_:
8227 			case DELIMITED_IDENTIFIER_:
8228 			case STRING_:
8229 			case NUMBER_:
8230 			case HEX_DIGIT_:
8231 			case BIT_NUM_:
8232 			case NCHAR_TEXT:
8233 				{
8234 				setState(1564);
8235 				expr(0);
8236 				setState(1569);
8237 				_errHandler.sync(this);
8238 				_la = _input.LA(1);
8239 				while (_la==COMMA_) {
8240 					{
8241 					{
8242 					setState(1565);
8243 					match(COMMA_);
8244 					setState(1566);
8245 					expr(0);
8246 					}
8247 					}
8248 					setState(1571);
8249 					_errHandler.sync(this);
8250 					_la = _input.LA(1);
8251 				}
8252 				}
8253 				break;
8254 			case ASTERISK_:
8255 				{
8256 				setState(1572);
8257 				match(ASTERISK_);
8258 				}
8259 				break;
8260 			case RP_:
8261 				break;
8262 			default:
8263 				break;
8264 			}
8265 			setState(1575);
8266 			match(RP_);
8267 			}
8268 		}
8269 		catch (RecognitionException re) {
8270 			_localctx.exception = re;
8271 			_errHandler.reportError(this, re);
8272 			_errHandler.recover(this, re);
8273 		}
8274 		finally {
8275 			exitRule();
8276 		}
8277 		return _localctx;
8278 	}
8279 
8280 	public static class RegularFunctionNameContext extends ParserRuleContext {
8281 		public IdentifierContext identifier() {
8282 			return getRuleContext(IdentifierContext.class,0);
8283 		}
8284 		public OwnerContext owner() {
8285 			return getRuleContext(OwnerContext.class,0);
8286 		}
8287 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
8288 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
8289 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
8290 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
8291 		public TerminalNode INTERVAL() { return getToken(SQLServerStatementParser.INTERVAL, 0); }
8292 		public RegularFunctionNameContext(ParserRuleContext parent, int invokingState) {
8293 			super(parent, invokingState);
8294 		}
8295 		@Override public int getRuleIndex() { return RULE_regularFunctionName; }
8296 		@Override
8297 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8298 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunctionName(this);
8299 			else return visitor.visitChildren(this);
8300 		}
8301 	}
8302 
8303 	public final RegularFunctionNameContext regularFunctionName() throws RecognitionException {
8304 		RegularFunctionNameContext _localctx = new RegularFunctionNameContext(_ctx, getState());
8305 		enterRule(_localctx, 134, RULE_regularFunctionName);
8306 		try {
8307 			setState(1587);
8308 			_errHandler.sync(this);
8309 			switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
8310 			case 1:
8311 				enterOuterAlt(_localctx, 1);
8312 				{
8313 				setState(1580);
8314 				_errHandler.sync(this);
8315 				switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
8316 				case 1:
8317 					{
8318 					setState(1577);
8319 					owner();
8320 					setState(1578);
8321 					match(DOT_);
8322 					}
8323 					break;
8324 				}
8325 				setState(1582);
8326 				identifier();
8327 				}
8328 				break;
8329 			case 2:
8330 				enterOuterAlt(_localctx, 2);
8331 				{
8332 				setState(1583);
8333 				match(IF);
8334 				}
8335 				break;
8336 			case 3:
8337 				enterOuterAlt(_localctx, 3);
8338 				{
8339 				setState(1584);
8340 				match(LOCALTIME);
8341 				}
8342 				break;
8343 			case 4:
8344 				enterOuterAlt(_localctx, 4);
8345 				{
8346 				setState(1585);
8347 				match(LOCALTIMESTAMP);
8348 				}
8349 				break;
8350 			case 5:
8351 				enterOuterAlt(_localctx, 5);
8352 				{
8353 				setState(1586);
8354 				match(INTERVAL);
8355 				}
8356 				break;
8357 			}
8358 		}
8359 		catch (RecognitionException re) {
8360 			_localctx.exception = re;
8361 			_errHandler.reportError(this, re);
8362 			_errHandler.recover(this, re);
8363 		}
8364 		finally {
8365 			exitRule();
8366 		}
8367 		return _localctx;
8368 	}
8369 
8370 	public static class CaseExpressionContext extends ParserRuleContext {
8371 		public TerminalNode CASE() { return getToken(SQLServerStatementParser.CASE, 0); }
8372 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
8373 		public SimpleExprContext simpleExpr() {
8374 			return getRuleContext(SimpleExprContext.class,0);
8375 		}
8376 		public List<CaseWhenContext> caseWhen() {
8377 			return getRuleContexts(CaseWhenContext.class);
8378 		}
8379 		public CaseWhenContext caseWhen(int i) {
8380 			return getRuleContext(CaseWhenContext.class,i);
8381 		}
8382 		public CaseElseContext caseElse() {
8383 			return getRuleContext(CaseElseContext.class,0);
8384 		}
8385 		public CaseExpressionContext(ParserRuleContext parent, int invokingState) {
8386 			super(parent, invokingState);
8387 		}
8388 		@Override public int getRuleIndex() { return RULE_caseExpression; }
8389 		@Override
8390 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8391 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseExpression(this);
8392 			else return visitor.visitChildren(this);
8393 		}
8394 	}
8395 
8396 	public final CaseExpressionContext caseExpression() throws RecognitionException {
8397 		CaseExpressionContext _localctx = new CaseExpressionContext(_ctx, getState());
8398 		enterRule(_localctx, 136, RULE_caseExpression);
8399 		int _la;
8400 		try {
8401 			enterOuterAlt(_localctx, 1);
8402 			{
8403 			setState(1589);
8404 			match(CASE);
8405 			setState(1591);
8406 			_errHandler.sync(this);
8407 			_la = _input.LA(1);
8408 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)) | (1L << (BLOCKERS - 203)) | (1L << (CLUSTERED - 203)) | (1L << (NONCLUSTERED - 203)) | (1L << (COLUMNSTORE - 203)) | (1L << (CONTENT - 203)) | (1L << (CONVERT - 203)) | (1L << (YEARS - 203)) | (1L << (MONTHS - 203)) | (1L << (WEEKS - 203)) | (1L << (DAYS - 203)) | (1L << (MINUTES - 203)) | (1L << (DENY - 203)) | (1L << (DETERMINISTIC - 203)) | (1L << (DISTRIBUTION - 203)) | (1L << (DOCUMENT - 203)) | (1L << (DURABILITY - 203)) | (1L << (ENCRYPTED - 203)) | (1L << (FILESTREAM - 203)) | (1L << (FILETABLE - 203)) | (1L << (FILLFACTOR - 203)) | (1L << (FOLLOWING - 203)) | (1L << (HASH - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)) | (1L << (CONTROL - 267)) | (1L << (CONCAT - 267)) | (1L << (TAKE - 267)) | (1L << (OWNERSHIP - 267)) | (1L << (DEFINITION - 267)) | (1L << (APPLICATION - 267)) | (1L << (ASSEMBLY - 267)) | (1L << (SYMMETRIC - 267)) | (1L << (ASYMMETRIC - 267)) | (1L << (SERVER - 267)) | (1L << (RECEIVE - 267)) | (1L << (CHANGE - 267)) | (1L << (TRACE - 267)) | (1L << (TRACKING - 267)) | (1L << (RESOURCES - 267)) | (1L << (SETTINGS - 267)) | (1L << (STATE - 267)) | (1L << (AVAILABILITY - 267)) | (1L << (CREDENTIAL - 267)) | (1L << (ENDPOINT - 267)) | (1L << (EVENT - 267)) | (1L << (NOTIFICATION - 267)) | (1L << (LINKED - 267)) | (1L << (AUDIT - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)) | (1L << (KILL - 331)) | (1L << (BACKUP - 331)) | (1L << (LOG - 331)) | (1L << (SHOWPLAN - 331)) | (1L << (SUBSCRIBE - 331)) | (1L << (QUERY - 331)) | (1L << (NOTIFICATIONS - 331)) | (1L << (CHECKPOINT - 331)) | (1L << (SEQUENCE - 331)) | (1L << (ABORT_AFTER_WAIT - 331)) | (1L << (ALLOW_PAGE_LOCKS - 331)) | (1L << (ALLOW_ROW_LOCKS - 331)) | (1L << (ALL_SPARSE_COLUMNS - 331)) | (1L << (BUCKET_COUNT - 331)) | (1L << (COLUMNSTORE_ARCHIVE - 331)) | (1L << (COLUMN_ENCRYPTION_KEY - 331)) | (1L << (COLUMN_SET - 331)) | (1L << (COMPRESSION_DELAY - 331)) | (1L << (DATABASE_DEAULT - 331)) | (1L << (DATA_COMPRESSION - 331)) | (1L << (DATA_CONSISTENCY_CHECK - 331)) | (1L << (ENCRYPTION_TYPE - 331)) | (1L << (SYSTEM_TIME - 331)) | (1L << (SYSTEM_VERSIONING - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)) | (1L << (OUTPUT - 395)) | (1L << (INSERTED - 395)) | (1L << (DELETED - 395)))) != 0) || ((((_la - 480)) & ~0x3f) == 0 && ((1L << (_la - 480)) & ((1L << (FILENAME - 480)) | (1L << (MAXSIZE - 480)) | (1L << (FILEGROWTH - 480)) | (1L << (UNLIMITED - 480)) | (1L << (KB - 480)) | (1L << (MB - 480)) | (1L << (GB - 480)) | (1L << (TB - 480)) | (1L << (MEMORY_OPTIMIZED_DATA - 480)) | (1L << (FILEGROUP - 480)) | (1L << (NON_TRANSACTED_ACCESS - 480)) | (1L << (DB_CHAINING - 480)) | (1L << (TRUSTWORTHY - 480)) | (1L << (FORWARD_ONLY - 480)) | (1L << (KEYSET - 480)) | (1L << (FAST_FORWARD - 480)) | (1L << (SCROLL_LOCKS - 480)) | (1L << (OPTIMISTIC - 480)) | (1L << (TYPE_WARNING - 480)) | (1L << (SCHEMABINDING - 480)) | (1L << (CALLER - 480)) | (1L << (OWNER - 480)) | (1L << (SNAPSHOT - 480)) | (1L << (REPEATABLE - 480)) | (1L << (SERIALIZABLE - 480)) | (1L << (NATIVE_COMPILATION - 480)) | (1L << (VIEW_METADATA - 480)) | (1L << (INSTEAD - 480)) | (1L << (APPEND - 480)) | (1L << (INCREMENT - 480)) | (1L << (CACHE - 480)) | (1L << (MINVALUE - 480)) | (1L << (MAXVALUE - 480)) | (1L << (RESTART - 480)) | (1L << (LOB_COMPACTION - 480)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 480)) | (1L << (REORGANIZE - 480)) | (1L << (RESUME - 480)) | (1L << (PAUSE - 480)) | (1L << (ABORT - 480)))) != 0) || ((((_la - 546)) & ~0x3f) == 0 && ((1L << (_la - 546)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 546)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 546)) | (1L << (IMMEDIATE - 546)) | (1L << (NO_WAIT - 546)) | (1L << (TARGET_RECOVERY_TIME - 546)) | (1L << (SECONDS - 546)) | (1L << (HONOR_BROKER_PRIORITY - 546)) | (1L << (ERROR_BROKER_CONVERSATIONS - 546)) | (1L << (NEW_BROKER - 546)) | (1L << (DISABLE_BROKER - 546)) | (1L << (ENABLE_BROKER - 546)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 546)) | (1L << (READ_COMMITTED_SNAPSHOT - 546)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 546)) | (1L << (RECURSIVE_TRIGGERS - 546)) | (1L << (QUOTED_IDENTIFIER - 546)) | (1L << (NUMERIC_ROUNDABORT - 546)) | (1L << (CONCAT_NULL_YIELDS_NULL - 546)) | (1L << (COMPATIBILITY_LEVEL - 546)) | (1L << (ARITHABORT - 546)) | (1L << (ANSI_WARNINGS - 546)) | (1L << (ANSI_PADDING - 546)) | (1L << (ANSI_NULLS - 546)) | (1L << (ANSI_NULL_DEFAULT - 546)) | (1L << (PAGE_VERIFY - 546)) | (1L << (CHECKSUM - 546)) | (1L << (TORN_PAGE_DETECTION - 546)) | (1L << (BULK_LOGGED - 546)) | (1L << (RECOVERY - 546)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 546)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 546)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 546)) | (1L << (EXECUTION_COUNT - 546)) | (1L << (QUERY_CAPTURE_POLICY - 546)) | (1L << (WAIT_STATS_CAPTURE_MODE - 546)) | (1L << (MAX_PLANS_PER_QUERY - 546)) | (1L << (QUERY_CAPTURE_MODE - 546)) | (1L << (SIZE_BASED_CLEANUP_MODE - 546)) | (1L << (INTERVAL_LENGTH_MINUTES - 546)) | (1L << (MAX_STORAGE_SIZE_MB - 546)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 546)) | (1L << (CLEANUP_POLICY - 546)) | (1L << (CUSTOM - 546)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 546)) | (1L << (OPERATION_MODE - 546)) | (1L << (QUERY_STORE - 546)) | (1L << (CURSOR_DEFAULT - 546)) | (1L << (GLOBAL - 546)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 546)) | (1L << (HOURS - 546)) | (1L << (CHANGE_RETENTION - 546)) | (1L << (AUTO_CLEANUP - 546)) | (1L << (CHANGE_TRACKING - 546)) | (1L << (AUTOMATIC_TUNING - 546)) | (1L << (FORCE_LAST_GOOD_PLAN - 546)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 546)) | (1L << (AUTO_UPDATE_STATISTICS - 546)) | (1L << (AUTO_SHRINK - 546)) | (1L << (AUTO_CREATE_STATISTICS - 546)) | (1L << (INCREMENTAL - 546)) | (1L << (AUTO_CLOSE - 546)) | (1L << (DATA_RETENTION - 546)) | (1L << (TEMPORAL_HISTORY_RETENTION - 546)) | (1L << (EDITION - 546)))) != 0) || ((((_la - 610)) & ~0x3f) == 0 && ((1L << (_la - 610)) & ((1L << (MIXED_PAGE_ALLOCATION - 610)) | (1L << (DISABLED - 610)) | (1L << (ALLOWED - 610)) | (1L << (HADR - 610)) | (1L << (MULTI_USER - 610)) | (1L << (RESTRICTED_USER - 610)) | (1L << (SINGLE_USER - 610)) | (1L << (OFFLINE - 610)) | (1L << (EMERGENCY - 610)) | (1L << (SUSPEND - 610)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 610)) | (1L << (ELASTIC_POOL - 610)) | (1L << (SERVICE_OBJECTIVE - 610)) | (1L << (DATABASE_NAME - 610)) | (1L << (ALLOW_CONNECTIONS - 610)) | (1L << (GEO - 610)) | (1L << (NAMED - 610)) | (1L << (DATEFIRST - 610)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 610)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 610)) | (1L << (SECONDARY - 610)) | (1L << (FAILOVER - 610)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 610)) | (1L << (DEFAULT_LANGUAGE - 610)) | (1L << (INLINE - 610)) | (1L << (NESTED_TRIGGERS - 610)) | (1L << (TRANSFORM_NOISE_WORDS - 610)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 610)) | (1L << (PERSISTENT_LOG_BUFFER - 610)) | (1L << (DIRECTORY_NAME - 610)) | (1L << (DATEFORMAT - 610)) | (1L << (DELAYED_DURABILITY - 610)) | (1L << (AUTHORIZATION - 610)) | (1L << (TRANSFER - 610)) | (1L << (PROVIDER - 610)) | (1L << (SEARCH - 610)) | (1L << (MEMBER - 610)))) != 0) || ((((_la - 693)) & ~0x3f) == 0 && ((1L << (_la - 693)) & ((1L << (IDENTIFIER_ - 693)) | (1L << (DELIMITED_IDENTIFIER_ - 693)) | (1L << (STRING_ - 693)) | (1L << (NUMBER_ - 693)) | (1L << (HEX_DIGIT_ - 693)) | (1L << (BIT_NUM_ - 693)) | (1L << (NCHAR_TEXT - 693)))) != 0)) {
8409 				{
8410 				setState(1590);
8411 				simpleExpr(0);
8412 				}
8413 			}
8414 
8415 			setState(1594); 
8416 			_errHandler.sync(this);
8417 			_la = _input.LA(1);
8418 			do {
8419 				{
8420 				{
8421 				setState(1593);
8422 				caseWhen();
8423 				}
8424 				}
8425 				setState(1596); 
8426 				_errHandler.sync(this);
8427 				_la = _input.LA(1);
8428 			} while ( _la==WHEN );
8429 			setState(1599);
8430 			_errHandler.sync(this);
8431 			_la = _input.LA(1);
8432 			if (_la==ELSE) {
8433 				{
8434 				setState(1598);
8435 				caseElse();
8436 				}
8437 			}
8438 
8439 			setState(1601);
8440 			match(END);
8441 			}
8442 		}
8443 		catch (RecognitionException re) {
8444 			_localctx.exception = re;
8445 			_errHandler.reportError(this, re);
8446 			_errHandler.recover(this, re);
8447 		}
8448 		finally {
8449 			exitRule();
8450 		}
8451 		return _localctx;
8452 	}
8453 
8454 	public static class CaseWhenContext extends ParserRuleContext {
8455 		public TerminalNode WHEN() { return getToken(SQLServerStatementParser.WHEN, 0); }
8456 		public List<ExprContext> expr() {
8457 			return getRuleContexts(ExprContext.class);
8458 		}
8459 		public ExprContext expr(int i) {
8460 			return getRuleContext(ExprContext.class,i);
8461 		}
8462 		public TerminalNode THEN() { return getToken(SQLServerStatementParser.THEN, 0); }
8463 		public CaseWhenContext(ParserRuleContext parent, int invokingState) {
8464 			super(parent, invokingState);
8465 		}
8466 		@Override public int getRuleIndex() { return RULE_caseWhen; }
8467 		@Override
8468 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8469 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseWhen(this);
8470 			else return visitor.visitChildren(this);
8471 		}
8472 	}
8473 
8474 	public final CaseWhenContext caseWhen() throws RecognitionException {
8475 		CaseWhenContext _localctx = new CaseWhenContext(_ctx, getState());
8476 		enterRule(_localctx, 138, RULE_caseWhen);
8477 		try {
8478 			enterOuterAlt(_localctx, 1);
8479 			{
8480 			setState(1603);
8481 			match(WHEN);
8482 			setState(1604);
8483 			expr(0);
8484 			setState(1605);
8485 			match(THEN);
8486 			setState(1606);
8487 			expr(0);
8488 			}
8489 		}
8490 		catch (RecognitionException re) {
8491 			_localctx.exception = re;
8492 			_errHandler.reportError(this, re);
8493 			_errHandler.recover(this, re);
8494 		}
8495 		finally {
8496 			exitRule();
8497 		}
8498 		return _localctx;
8499 	}
8500 
8501 	public static class CaseElseContext extends ParserRuleContext {
8502 		public TerminalNode ELSE() { return getToken(SQLServerStatementParser.ELSE, 0); }
8503 		public ExprContext expr() {
8504 			return getRuleContext(ExprContext.class,0);
8505 		}
8506 		public CaseElseContext(ParserRuleContext parent, int invokingState) {
8507 			super(parent, invokingState);
8508 		}
8509 		@Override public int getRuleIndex() { return RULE_caseElse; }
8510 		@Override
8511 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8512 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseElse(this);
8513 			else return visitor.visitChildren(this);
8514 		}
8515 	}
8516 
8517 	public final CaseElseContext caseElse() throws RecognitionException {
8518 		CaseElseContext _localctx = new CaseElseContext(_ctx, getState());
8519 		enterRule(_localctx, 140, RULE_caseElse);
8520 		try {
8521 			enterOuterAlt(_localctx, 1);
8522 			{
8523 			setState(1608);
8524 			match(ELSE);
8525 			setState(1609);
8526 			expr(0);
8527 			}
8528 		}
8529 		catch (RecognitionException re) {
8530 			_localctx.exception = re;
8531 			_errHandler.reportError(this, re);
8532 			_errHandler.recover(this, re);
8533 		}
8534 		finally {
8535 			exitRule();
8536 		}
8537 		return _localctx;
8538 	}
8539 
8540 	public static class PrivateExprOfDbContext extends ParserRuleContext {
8541 		public WindowedFunctionContext windowedFunction() {
8542 			return getRuleContext(WindowedFunctionContext.class,0);
8543 		}
8544 		public AtTimeZoneExprContext atTimeZoneExpr() {
8545 			return getRuleContext(AtTimeZoneExprContext.class,0);
8546 		}
8547 		public CastExprContext castExpr() {
8548 			return getRuleContext(CastExprContext.class,0);
8549 		}
8550 		public ConvertExprContext convertExpr() {
8551 			return getRuleContext(ConvertExprContext.class,0);
8552 		}
8553 		public PrivateExprOfDbContext(ParserRuleContext parent, int invokingState) {
8554 			super(parent, invokingState);
8555 		}
8556 		@Override public int getRuleIndex() { return RULE_privateExprOfDb; }
8557 		@Override
8558 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8559 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivateExprOfDb(this);
8560 			else return visitor.visitChildren(this);
8561 		}
8562 	}
8563 
8564 	public final PrivateExprOfDbContext privateExprOfDb() throws RecognitionException {
8565 		PrivateExprOfDbContext _localctx = new PrivateExprOfDbContext(_ctx, getState());
8566 		enterRule(_localctx, 142, RULE_privateExprOfDb);
8567 		try {
8568 			setState(1615);
8569 			_errHandler.sync(this);
8570 			switch ( getInterpreter().adaptivePredict(_input,76,_ctx) ) {
8571 			case 1:
8572 				enterOuterAlt(_localctx, 1);
8573 				{
8574 				setState(1611);
8575 				windowedFunction();
8576 				}
8577 				break;
8578 			case 2:
8579 				enterOuterAlt(_localctx, 2);
8580 				{
8581 				setState(1612);
8582 				atTimeZoneExpr();
8583 				}
8584 				break;
8585 			case 3:
8586 				enterOuterAlt(_localctx, 3);
8587 				{
8588 				setState(1613);
8589 				castExpr();
8590 				}
8591 				break;
8592 			case 4:
8593 				enterOuterAlt(_localctx, 4);
8594 				{
8595 				setState(1614);
8596 				convertExpr();
8597 				}
8598 				break;
8599 			}
8600 		}
8601 		catch (RecognitionException re) {
8602 			_localctx.exception = re;
8603 			_errHandler.reportError(this, re);
8604 			_errHandler.recover(this, re);
8605 		}
8606 		finally {
8607 			exitRule();
8608 		}
8609 		return _localctx;
8610 	}
8611 
8612 	public static class OrderByClauseContext extends ParserRuleContext {
8613 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
8614 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
8615 		public List<OrderByItemContext> orderByItem() {
8616 			return getRuleContexts(OrderByItemContext.class);
8617 		}
8618 		public OrderByItemContext orderByItem(int i) {
8619 			return getRuleContext(OrderByItemContext.class,i);
8620 		}
8621 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8622 		public TerminalNode COMMA_(int i) {
8623 			return getToken(SQLServerStatementParser.COMMA_, i);
8624 		}
8625 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
8626 		public List<ExprContext> expr() {
8627 			return getRuleContexts(ExprContext.class);
8628 		}
8629 		public ExprContext expr(int i) {
8630 			return getRuleContext(ExprContext.class,i);
8631 		}
8632 		public List<TerminalNode> ROW() { return getTokens(SQLServerStatementParser.ROW); }
8633 		public TerminalNode ROW(int i) {
8634 			return getToken(SQLServerStatementParser.ROW, i);
8635 		}
8636 		public List<TerminalNode> ROWS() { return getTokens(SQLServerStatementParser.ROWS); }
8637 		public TerminalNode ROWS(int i) {
8638 			return getToken(SQLServerStatementParser.ROWS, i);
8639 		}
8640 		public TerminalNode FETCH() { return getToken(SQLServerStatementParser.FETCH, 0); }
8641 		public TerminalNode ONLY() { return getToken(SQLServerStatementParser.ONLY, 0); }
8642 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
8643 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
8644 		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
8645 			super(parent, invokingState);
8646 		}
8647 		@Override public int getRuleIndex() { return RULE_orderByClause; }
8648 		@Override
8649 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8650 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByClause(this);
8651 			else return visitor.visitChildren(this);
8652 		}
8653 	}
8654 
8655 	public final OrderByClauseContext orderByClause() throws RecognitionException {
8656 		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
8657 		enterRule(_localctx, 144, RULE_orderByClause);
8658 		int _la;
8659 		try {
8660 			enterOuterAlt(_localctx, 1);
8661 			{
8662 			setState(1617);
8663 			match(ORDER);
8664 			setState(1618);
8665 			match(BY);
8666 			setState(1619);
8667 			orderByItem();
8668 			setState(1624);
8669 			_errHandler.sync(this);
8670 			_la = _input.LA(1);
8671 			while (_la==COMMA_) {
8672 				{
8673 				{
8674 				setState(1620);
8675 				match(COMMA_);
8676 				setState(1621);
8677 				orderByItem();
8678 				}
8679 				}
8680 				setState(1626);
8681 				_errHandler.sync(this);
8682 				_la = _input.LA(1);
8683 			}
8684 			setState(1638);
8685 			_errHandler.sync(this);
8686 			_la = _input.LA(1);
8687 			if (_la==OFFSET) {
8688 				{
8689 				setState(1627);
8690 				match(OFFSET);
8691 				setState(1628);
8692 				expr(0);
8693 				setState(1629);
8694 				_la = _input.LA(1);
8695 				if ( !(_la==ROW || _la==ROWS) ) {
8696 				_errHandler.recoverInline(this);
8697 				}
8698 				else {
8699 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8700 					_errHandler.reportMatch(this);
8701 					consume();
8702 				}
8703 				setState(1636);
8704 				_errHandler.sync(this);
8705 				_la = _input.LA(1);
8706 				if (_la==FETCH) {
8707 					{
8708 					setState(1630);
8709 					match(FETCH);
8710 					setState(1631);
8711 					_la = _input.LA(1);
8712 					if ( !(_la==NEXT || _la==FIRST) ) {
8713 					_errHandler.recoverInline(this);
8714 					}
8715 					else {
8716 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8717 						_errHandler.reportMatch(this);
8718 						consume();
8719 					}
8720 					setState(1632);
8721 					expr(0);
8722 					setState(1633);
8723 					_la = _input.LA(1);
8724 					if ( !(_la==ROW || _la==ROWS) ) {
8725 					_errHandler.recoverInline(this);
8726 					}
8727 					else {
8728 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8729 						_errHandler.reportMatch(this);
8730 						consume();
8731 					}
8732 					setState(1634);
8733 					match(ONLY);
8734 					}
8735 				}
8736 
8737 				}
8738 			}
8739 
8740 			}
8741 		}
8742 		catch (RecognitionException re) {
8743 			_localctx.exception = re;
8744 			_errHandler.reportError(this, re);
8745 			_errHandler.recover(this, re);
8746 		}
8747 		finally {
8748 			exitRule();
8749 		}
8750 		return _localctx;
8751 	}
8752 
8753 	public static class OrderByItemContext extends ParserRuleContext {
8754 		public ColumnNameContext columnName() {
8755 			return getRuleContext(ColumnNameContext.class,0);
8756 		}
8757 		public NumberLiteralsContext numberLiterals() {
8758 			return getRuleContext(NumberLiteralsContext.class,0);
8759 		}
8760 		public ExprContext expr() {
8761 			return getRuleContext(ExprContext.class,0);
8762 		}
8763 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
8764 		public IdentifierContext identifier() {
8765 			return getRuleContext(IdentifierContext.class,0);
8766 		}
8767 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
8768 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
8769 		public OrderByItemContext(ParserRuleContext parent, int invokingState) {
8770 			super(parent, invokingState);
8771 		}
8772 		@Override public int getRuleIndex() { return RULE_orderByItem; }
8773 		@Override
8774 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8775 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByItem(this);
8776 			else return visitor.visitChildren(this);
8777 		}
8778 	}
8779 
8780 	public final OrderByItemContext orderByItem() throws RecognitionException {
8781 		OrderByItemContext _localctx = new OrderByItemContext(_ctx, getState());
8782 		enterRule(_localctx, 146, RULE_orderByItem);
8783 		int _la;
8784 		try {
8785 			enterOuterAlt(_localctx, 1);
8786 			{
8787 			setState(1643);
8788 			_errHandler.sync(this);
8789 			switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
8790 			case 1:
8791 				{
8792 				setState(1640);
8793 				columnName();
8794 				}
8795 				break;
8796 			case 2:
8797 				{
8798 				setState(1641);
8799 				numberLiterals();
8800 				}
8801 				break;
8802 			case 3:
8803 				{
8804 				setState(1642);
8805 				expr(0);
8806 				}
8807 				break;
8808 			}
8809 			setState(1647);
8810 			_errHandler.sync(this);
8811 			_la = _input.LA(1);
8812 			if (_la==COLLATE) {
8813 				{
8814 				setState(1645);
8815 				match(COLLATE);
8816 				setState(1646);
8817 				identifier();
8818 				}
8819 			}
8820 
8821 			setState(1650);
8822 			_errHandler.sync(this);
8823 			_la = _input.LA(1);
8824 			if (_la==ASC || _la==DESC) {
8825 				{
8826 				setState(1649);
8827 				_la = _input.LA(1);
8828 				if ( !(_la==ASC || _la==DESC) ) {
8829 				_errHandler.recoverInline(this);
8830 				}
8831 				else {
8832 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8833 					_errHandler.reportMatch(this);
8834 					consume();
8835 				}
8836 				}
8837 			}
8838 
8839 			}
8840 		}
8841 		catch (RecognitionException re) {
8842 			_localctx.exception = re;
8843 			_errHandler.reportError(this, re);
8844 			_errHandler.recover(this, re);
8845 		}
8846 		finally {
8847 			exitRule();
8848 		}
8849 		return _localctx;
8850 	}
8851 
8852 	public static class DataTypeContext extends ParserRuleContext {
8853 		public DataTypeNameContext dataTypeName() {
8854 			return getRuleContext(DataTypeNameContext.class,0);
8855 		}
8856 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
8857 			return getRuleContexts(IgnoredIdentifierContext.class);
8858 		}
8859 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
8860 			return getRuleContext(IgnoredIdentifierContext.class,i);
8861 		}
8862 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
8863 		public DataTypeLengthContext dataTypeLength() {
8864 			return getRuleContext(DataTypeLengthContext.class,0);
8865 		}
8866 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8867 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
8868 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8869 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
8870 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
8871 		public DataTypeContext(ParserRuleContext parent, int invokingState) {
8872 			super(parent, invokingState);
8873 		}
8874 		@Override public int getRuleIndex() { return RULE_dataType; }
8875 		@Override
8876 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8877 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataType(this);
8878 			else return visitor.visitChildren(this);
8879 		}
8880 	}
8881 
8882 	public final DataTypeContext dataType() throws RecognitionException {
8883 		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
8884 		enterRule(_localctx, 148, RULE_dataType);
8885 		int _la;
8886 		try {
8887 			enterOuterAlt(_localctx, 1);
8888 			{
8889 			setState(1655);
8890 			_errHandler.sync(this);
8891 			switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) {
8892 			case 1:
8893 				{
8894 				setState(1652);
8895 				ignoredIdentifier();
8896 				setState(1653);
8897 				match(DOT_);
8898 				}
8899 				break;
8900 			}
8901 			setState(1657);
8902 			dataTypeName();
8903 			setState(1669);
8904 			_errHandler.sync(this);
8905 			switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) {
8906 			case 1:
8907 				{
8908 				setState(1658);
8909 				dataTypeLength();
8910 				}
8911 				break;
8912 			case 2:
8913 				{
8914 				setState(1659);
8915 				match(LP_);
8916 				setState(1660);
8917 				match(MAX);
8918 				setState(1661);
8919 				match(RP_);
8920 				}
8921 				break;
8922 			case 3:
8923 				{
8924 				setState(1662);
8925 				match(LP_);
8926 				setState(1664);
8927 				_errHandler.sync(this);
8928 				_la = _input.LA(1);
8929 				if (_la==CONTENT || _la==DOCUMENT) {
8930 					{
8931 					setState(1663);
8932 					_la = _input.LA(1);
8933 					if ( !(_la==CONTENT || _la==DOCUMENT) ) {
8934 					_errHandler.recoverInline(this);
8935 					}
8936 					else {
8937 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8938 						_errHandler.reportMatch(this);
8939 						consume();
8940 					}
8941 					}
8942 				}
8943 
8944 				setState(1666);
8945 				ignoredIdentifier();
8946 				setState(1667);
8947 				match(RP_);
8948 				}
8949 				break;
8950 			}
8951 			}
8952 		}
8953 		catch (RecognitionException re) {
8954 			_localctx.exception = re;
8955 			_errHandler.reportError(this, re);
8956 			_errHandler.recover(this, re);
8957 		}
8958 		finally {
8959 			exitRule();
8960 		}
8961 		return _localctx;
8962 	}
8963 
8964 	public static class DataTypeNameContext extends ParserRuleContext {
8965 		public TerminalNode BIGINT() { return getToken(SQLServerStatementParser.BIGINT, 0); }
8966 		public TerminalNode NUMERIC() { return getToken(SQLServerStatementParser.NUMERIC, 0); }
8967 		public TerminalNode BIT() { return getToken(SQLServerStatementParser.BIT, 0); }
8968 		public TerminalNode SMALLINT() { return getToken(SQLServerStatementParser.SMALLINT, 0); }
8969 		public TerminalNode DECIMAL() { return getToken(SQLServerStatementParser.DECIMAL, 0); }
8970 		public TerminalNode SMALLMONEY() { return getToken(SQLServerStatementParser.SMALLMONEY, 0); }
8971 		public TerminalNode INT() { return getToken(SQLServerStatementParser.INT, 0); }
8972 		public TerminalNode TINYINT() { return getToken(SQLServerStatementParser.TINYINT, 0); }
8973 		public TerminalNode MONEY() { return getToken(SQLServerStatementParser.MONEY, 0); }
8974 		public TerminalNode FLOAT() { return getToken(SQLServerStatementParser.FLOAT, 0); }
8975 		public TerminalNode REAL() { return getToken(SQLServerStatementParser.REAL, 0); }
8976 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
8977 		public TerminalNode DATETIMEOFFSET() { return getToken(SQLServerStatementParser.DATETIMEOFFSET, 0); }
8978 		public TerminalNode SMALLDATETIME() { return getToken(SQLServerStatementParser.SMALLDATETIME, 0); }
8979 		public TerminalNode DATETIME() { return getToken(SQLServerStatementParser.DATETIME, 0); }
8980 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
8981 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
8982 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
8983 		public TerminalNode VARCHAR() { return getToken(SQLServerStatementParser.VARCHAR, 0); }
8984 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
8985 		public TerminalNode NCHAR() { return getToken(SQLServerStatementParser.NCHAR, 0); }
8986 		public TerminalNode NVARCHAR() { return getToken(SQLServerStatementParser.NVARCHAR, 0); }
8987 		public TerminalNode NTEXT() { return getToken(SQLServerStatementParser.NTEXT, 0); }
8988 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
8989 		public TerminalNode VARBINARY() { return getToken(SQLServerStatementParser.VARBINARY, 0); }
8990 		public TerminalNode IMAGE() { return getToken(SQLServerStatementParser.IMAGE, 0); }
8991 		public TerminalNode SQL_VARIANT() { return getToken(SQLServerStatementParser.SQL_VARIANT, 0); }
8992 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
8993 		public TerminalNode UNIQUEIDENTIFIER() { return getToken(SQLServerStatementParser.UNIQUEIDENTIFIER, 0); }
8994 		public TerminalNode HIERARCHYID() { return getToken(SQLServerStatementParser.HIERARCHYID, 0); }
8995 		public TerminalNode GEOMETRY() { return getToken(SQLServerStatementParser.GEOMETRY, 0); }
8996 		public TerminalNode GEOGRAPHY() { return getToken(SQLServerStatementParser.GEOGRAPHY, 0); }
8997 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
8998 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
8999 		public DataTypeNameContext(ParserRuleContext parent, int invokingState) {
9000 			super(parent, invokingState);
9001 		}
9002 		@Override public int getRuleIndex() { return RULE_dataTypeName; }
9003 		@Override
9004 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9005 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeName(this);
9006 			else return visitor.visitChildren(this);
9007 		}
9008 	}
9009 
9010 	public final DataTypeNameContext dataTypeName() throws RecognitionException {
9011 		DataTypeNameContext _localctx = new DataTypeNameContext(_ctx, getState());
9012 		enterRule(_localctx, 150, RULE_dataTypeName);
9013 		int _la;
9014 		try {
9015 			enterOuterAlt(_localctx, 1);
9016 			{
9017 			setState(1671);
9018 			_la = _input.LA(1);
9019 			if ( !(((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (CHAR - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (INTEGER - 131)) | (1L << (REAL - 131)) | (1L << (DECIMAL - 131)) | (1L << (BIT - 131)) | (1L << (SMALLINT - 131)) | (1L << (INT - 131)) | (1L << (TINYINT - 131)) | (1L << (NUMERIC - 131)) | (1L << (FLOAT - 131)) | (1L << (BIGINT - 131)) | (1L << (TEXT - 131)) | (1L << (VARCHAR - 131)))) != 0) || _la==BINARY || _la==XML || ((((_la - 425)) & ~0x3f) == 0 && ((1L << (_la - 425)) & ((1L << (MONEY - 425)) | (1L << (SMALLMONEY - 425)) | (1L << (DATETIMEOFFSET - 425)) | (1L << (DATETIME - 425)) | (1L << (DATETIME2 - 425)) | (1L << (SMALLDATETIME - 425)) | (1L << (NCHAR - 425)) | (1L << (NVARCHAR - 425)) | (1L << (NTEXT - 425)) | (1L << (VARBINARY - 425)) | (1L << (IMAGE - 425)) | (1L << (SQL_VARIANT - 425)) | (1L << (UNIQUEIDENTIFIER - 425)) | (1L << (HIERARCHYID - 425)) | (1L << (GEOMETRY - 425)) | (1L << (GEOGRAPHY - 425)))) != 0) || _la==IDENTIFIER_) ) {
9020 			_errHandler.recoverInline(this);
9021 			}
9022 			else {
9023 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9024 				_errHandler.reportMatch(this);
9025 				consume();
9026 			}
9027 			}
9028 		}
9029 		catch (RecognitionException re) {
9030 			_localctx.exception = re;
9031 			_errHandler.reportError(this, re);
9032 			_errHandler.recover(this, re);
9033 		}
9034 		finally {
9035 			exitRule();
9036 		}
9037 		return _localctx;
9038 	}
9039 
9040 	public static class AtTimeZoneExprContext extends ParserRuleContext {
9041 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
9042 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
9043 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
9044 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
9045 		public TerminalNode ZONE() { return getToken(SQLServerStatementParser.ZONE, 0); }
9046 		public AtTimeZoneExprContext(ParserRuleContext parent, int invokingState) {
9047 			super(parent, invokingState);
9048 		}
9049 		@Override public int getRuleIndex() { return RULE_atTimeZoneExpr; }
9050 		@Override
9051 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9052 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAtTimeZoneExpr(this);
9053 			else return visitor.visitChildren(this);
9054 		}
9055 	}
9056 
9057 	public final AtTimeZoneExprContext atTimeZoneExpr() throws RecognitionException {
9058 		AtTimeZoneExprContext _localctx = new AtTimeZoneExprContext(_ctx, getState());
9059 		enterRule(_localctx, 152, RULE_atTimeZoneExpr);
9060 		int _la;
9061 		try {
9062 			enterOuterAlt(_localctx, 1);
9063 			{
9064 			setState(1673);
9065 			match(IDENTIFIER_);
9066 			setState(1677);
9067 			_errHandler.sync(this);
9068 			_la = _input.LA(1);
9069 			if (_la==WITH) {
9070 				{
9071 				setState(1674);
9072 				match(WITH);
9073 				setState(1675);
9074 				match(TIME);
9075 				setState(1676);
9076 				match(ZONE);
9077 				}
9078 			}
9079 
9080 			setState(1679);
9081 			match(STRING_);
9082 			}
9083 		}
9084 		catch (RecognitionException re) {
9085 			_localctx.exception = re;
9086 			_errHandler.reportError(this, re);
9087 			_errHandler.recover(this, re);
9088 		}
9089 		finally {
9090 			exitRule();
9091 		}
9092 		return _localctx;
9093 	}
9094 
9095 	public static class CastExprContext extends ParserRuleContext {
9096 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
9097 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
9098 		public TerminalNode LP_(int i) {
9099 			return getToken(SQLServerStatementParser.LP_, i);
9100 		}
9101 		public ExprContext expr() {
9102 			return getRuleContext(ExprContext.class,0);
9103 		}
9104 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
9105 		public DataTypeContext dataType() {
9106 			return getRuleContext(DataTypeContext.class,0);
9107 		}
9108 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
9109 		public TerminalNode RP_(int i) {
9110 			return getToken(SQLServerStatementParser.RP_, i);
9111 		}
9112 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9113 		public CastExprContext(ParserRuleContext parent, int invokingState) {
9114 			super(parent, invokingState);
9115 		}
9116 		@Override public int getRuleIndex() { return RULE_castExpr; }
9117 		@Override
9118 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9119 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastExpr(this);
9120 			else return visitor.visitChildren(this);
9121 		}
9122 	}
9123 
9124 	public final CastExprContext castExpr() throws RecognitionException {
9125 		CastExprContext _localctx = new CastExprContext(_ctx, getState());
9126 		enterRule(_localctx, 154, RULE_castExpr);
9127 		int _la;
9128 		try {
9129 			enterOuterAlt(_localctx, 1);
9130 			{
9131 			setState(1681);
9132 			match(CAST);
9133 			setState(1682);
9134 			match(LP_);
9135 			setState(1683);
9136 			expr(0);
9137 			setState(1684);
9138 			match(AS);
9139 			setState(1685);
9140 			dataType();
9141 			setState(1689);
9142 			_errHandler.sync(this);
9143 			_la = _input.LA(1);
9144 			if (_la==LP_) {
9145 				{
9146 				setState(1686);
9147 				match(LP_);
9148 				setState(1687);
9149 				match(NUMBER_);
9150 				setState(1688);
9151 				match(RP_);
9152 				}
9153 			}
9154 
9155 			setState(1691);
9156 			match(RP_);
9157 			}
9158 		}
9159 		catch (RecognitionException re) {
9160 			_localctx.exception = re;
9161 			_errHandler.reportError(this, re);
9162 			_errHandler.recover(this, re);
9163 		}
9164 		finally {
9165 			exitRule();
9166 		}
9167 		return _localctx;
9168 	}
9169 
9170 	public static class ConvertExprContext extends ParserRuleContext {
9171 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
9172 		public DataTypeContext dataType() {
9173 			return getRuleContext(DataTypeContext.class,0);
9174 		}
9175 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9176 		public TerminalNode COMMA_(int i) {
9177 			return getToken(SQLServerStatementParser.COMMA_, i);
9178 		}
9179 		public ExprContext expr() {
9180 			return getRuleContext(ExprContext.class,0);
9181 		}
9182 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9183 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
9184 		public TerminalNode NUMBER_(int i) {
9185 			return getToken(SQLServerStatementParser.NUMBER_, i);
9186 		}
9187 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9188 		public ConvertExprContext(ParserRuleContext parent, int invokingState) {
9189 			super(parent, invokingState);
9190 		}
9191 		@Override public int getRuleIndex() { return RULE_convertExpr; }
9192 		@Override
9193 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9194 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertExpr(this);
9195 			else return visitor.visitChildren(this);
9196 		}
9197 	}
9198 
9199 	public final ConvertExprContext convertExpr() throws RecognitionException {
9200 		ConvertExprContext _localctx = new ConvertExprContext(_ctx, getState());
9201 		enterRule(_localctx, 156, RULE_convertExpr);
9202 		int _la;
9203 		try {
9204 			enterOuterAlt(_localctx, 1);
9205 			{
9206 			setState(1693);
9207 			match(CONVERT);
9208 			{
9209 			setState(1694);
9210 			dataType();
9211 			setState(1698);
9212 			_errHandler.sync(this);
9213 			_la = _input.LA(1);
9214 			if (_la==LP_) {
9215 				{
9216 				setState(1695);
9217 				match(LP_);
9218 				setState(1696);
9219 				match(NUMBER_);
9220 				setState(1697);
9221 				match(RP_);
9222 				}
9223 			}
9224 
9225 			setState(1700);
9226 			match(COMMA_);
9227 			setState(1701);
9228 			expr(0);
9229 			setState(1704);
9230 			_errHandler.sync(this);
9231 			switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
9232 			case 1:
9233 				{
9234 				setState(1702);
9235 				match(COMMA_);
9236 				setState(1703);
9237 				match(NUMBER_);
9238 				}
9239 				break;
9240 			}
9241 			}
9242 			}
9243 		}
9244 		catch (RecognitionException re) {
9245 			_localctx.exception = re;
9246 			_errHandler.reportError(this, re);
9247 			_errHandler.recover(this, re);
9248 		}
9249 		finally {
9250 			exitRule();
9251 		}
9252 		return _localctx;
9253 	}
9254 
9255 	public static class WindowedFunctionContext extends ParserRuleContext {
9256 		public FunctionCallContext functionCall() {
9257 			return getRuleContext(FunctionCallContext.class,0);
9258 		}
9259 		public OverClauseContext overClause() {
9260 			return getRuleContext(OverClauseContext.class,0);
9261 		}
9262 		public WindowedFunctionContext(ParserRuleContext parent, int invokingState) {
9263 			super(parent, invokingState);
9264 		}
9265 		@Override public int getRuleIndex() { return RULE_windowedFunction; }
9266 		@Override
9267 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9268 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowedFunction(this);
9269 			else return visitor.visitChildren(this);
9270 		}
9271 	}
9272 
9273 	public final WindowedFunctionContext windowedFunction() throws RecognitionException {
9274 		WindowedFunctionContext _localctx = new WindowedFunctionContext(_ctx, getState());
9275 		enterRule(_localctx, 158, RULE_windowedFunction);
9276 		try {
9277 			enterOuterAlt(_localctx, 1);
9278 			{
9279 			setState(1706);
9280 			functionCall();
9281 			setState(1707);
9282 			overClause();
9283 			}
9284 		}
9285 		catch (RecognitionException re) {
9286 			_localctx.exception = re;
9287 			_errHandler.reportError(this, re);
9288 			_errHandler.recover(this, re);
9289 		}
9290 		finally {
9291 			exitRule();
9292 		}
9293 		return _localctx;
9294 	}
9295 
9296 	public static class OverClauseContext extends ParserRuleContext {
9297 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
9298 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9299 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9300 		public PartitionByClauseContext partitionByClause() {
9301 			return getRuleContext(PartitionByClauseContext.class,0);
9302 		}
9303 		public OrderByClauseContext orderByClause() {
9304 			return getRuleContext(OrderByClauseContext.class,0);
9305 		}
9306 		public RowRangeClauseContext rowRangeClause() {
9307 			return getRuleContext(RowRangeClauseContext.class,0);
9308 		}
9309 		public OverClauseContext(ParserRuleContext parent, int invokingState) {
9310 			super(parent, invokingState);
9311 		}
9312 		@Override public int getRuleIndex() { return RULE_overClause; }
9313 		@Override
9314 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9315 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOverClause(this);
9316 			else return visitor.visitChildren(this);
9317 		}
9318 	}
9319 
9320 	public final OverClauseContext overClause() throws RecognitionException {
9321 		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
9322 		enterRule(_localctx, 160, RULE_overClause);
9323 		int _la;
9324 		try {
9325 			enterOuterAlt(_localctx, 1);
9326 			{
9327 			setState(1709);
9328 			match(OVER);
9329 			setState(1710);
9330 			match(LP_);
9331 			setState(1712);
9332 			_errHandler.sync(this);
9333 			_la = _input.LA(1);
9334 			if (_la==PARTITION) {
9335 				{
9336 				setState(1711);
9337 				partitionByClause();
9338 				}
9339 			}
9340 
9341 			setState(1715);
9342 			_errHandler.sync(this);
9343 			_la = _input.LA(1);
9344 			if (_la==ORDER) {
9345 				{
9346 				setState(1714);
9347 				orderByClause();
9348 				}
9349 			}
9350 
9351 			setState(1718);
9352 			_errHandler.sync(this);
9353 			_la = _input.LA(1);
9354 			if (_la==ROWS || _la==RANGE) {
9355 				{
9356 				setState(1717);
9357 				rowRangeClause();
9358 				}
9359 			}
9360 
9361 			setState(1720);
9362 			match(RP_);
9363 			}
9364 		}
9365 		catch (RecognitionException re) {
9366 			_localctx.exception = re;
9367 			_errHandler.reportError(this, re);
9368 			_errHandler.recover(this, re);
9369 		}
9370 		finally {
9371 			exitRule();
9372 		}
9373 		return _localctx;
9374 	}
9375 
9376 	public static class PartitionByClauseContext extends ParserRuleContext {
9377 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
9378 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
9379 		public List<ExprContext> expr() {
9380 			return getRuleContexts(ExprContext.class);
9381 		}
9382 		public ExprContext expr(int i) {
9383 			return getRuleContext(ExprContext.class,i);
9384 		}
9385 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9386 		public TerminalNode COMMA_(int i) {
9387 			return getToken(SQLServerStatementParser.COMMA_, i);
9388 		}
9389 		public PartitionByClauseContext(ParserRuleContext parent, int invokingState) {
9390 			super(parent, invokingState);
9391 		}
9392 		@Override public int getRuleIndex() { return RULE_partitionByClause; }
9393 		@Override
9394 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9395 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionByClause(this);
9396 			else return visitor.visitChildren(this);
9397 		}
9398 	}
9399 
9400 	public final PartitionByClauseContext partitionByClause() throws RecognitionException {
9401 		PartitionByClauseContext _localctx = new PartitionByClauseContext(_ctx, getState());
9402 		enterRule(_localctx, 162, RULE_partitionByClause);
9403 		int _la;
9404 		try {
9405 			enterOuterAlt(_localctx, 1);
9406 			{
9407 			setState(1722);
9408 			match(PARTITION);
9409 			setState(1723);
9410 			match(BY);
9411 			setState(1724);
9412 			expr(0);
9413 			setState(1729);
9414 			_errHandler.sync(this);
9415 			_la = _input.LA(1);
9416 			while (_la==COMMA_) {
9417 				{
9418 				{
9419 				setState(1725);
9420 				match(COMMA_);
9421 				setState(1726);
9422 				expr(0);
9423 				}
9424 				}
9425 				setState(1731);
9426 				_errHandler.sync(this);
9427 				_la = _input.LA(1);
9428 			}
9429 			}
9430 		}
9431 		catch (RecognitionException re) {
9432 			_localctx.exception = re;
9433 			_errHandler.reportError(this, re);
9434 			_errHandler.recover(this, re);
9435 		}
9436 		finally {
9437 			exitRule();
9438 		}
9439 		return _localctx;
9440 	}
9441 
9442 	public static class RowRangeClauseContext extends ParserRuleContext {
9443 		public WindowFrameExtentContext windowFrameExtent() {
9444 			return getRuleContext(WindowFrameExtentContext.class,0);
9445 		}
9446 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
9447 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
9448 		public RowRangeClauseContext(ParserRuleContext parent, int invokingState) {
9449 			super(parent, invokingState);
9450 		}
9451 		@Override public int getRuleIndex() { return RULE_rowRangeClause; }
9452 		@Override
9453 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9454 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRowRangeClause(this);
9455 			else return visitor.visitChildren(this);
9456 		}
9457 	}
9458 
9459 	public final RowRangeClauseContext rowRangeClause() throws RecognitionException {
9460 		RowRangeClauseContext _localctx = new RowRangeClauseContext(_ctx, getState());
9461 		enterRule(_localctx, 164, RULE_rowRangeClause);
9462 		int _la;
9463 		try {
9464 			enterOuterAlt(_localctx, 1);
9465 			{
9466 			setState(1732);
9467 			_la = _input.LA(1);
9468 			if ( !(_la==ROWS || _la==RANGE) ) {
9469 			_errHandler.recoverInline(this);
9470 			}
9471 			else {
9472 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9473 				_errHandler.reportMatch(this);
9474 				consume();
9475 			}
9476 			setState(1733);
9477 			windowFrameExtent();
9478 			}
9479 		}
9480 		catch (RecognitionException re) {
9481 			_localctx.exception = re;
9482 			_errHandler.reportError(this, re);
9483 			_errHandler.recover(this, re);
9484 		}
9485 		finally {
9486 			exitRule();
9487 		}
9488 		return _localctx;
9489 	}
9490 
9491 	public static class WindowFrameExtentContext extends ParserRuleContext {
9492 		public WindowFramePrecedingContext windowFramePreceding() {
9493 			return getRuleContext(WindowFramePrecedingContext.class,0);
9494 		}
9495 		public WindowFrameBetweenContext windowFrameBetween() {
9496 			return getRuleContext(WindowFrameBetweenContext.class,0);
9497 		}
9498 		public WindowFrameExtentContext(ParserRuleContext parent, int invokingState) {
9499 			super(parent, invokingState);
9500 		}
9501 		@Override public int getRuleIndex() { return RULE_windowFrameExtent; }
9502 		@Override
9503 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9504 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameExtent(this);
9505 			else return visitor.visitChildren(this);
9506 		}
9507 	}
9508 
9509 	public final WindowFrameExtentContext windowFrameExtent() throws RecognitionException {
9510 		WindowFrameExtentContext _localctx = new WindowFrameExtentContext(_ctx, getState());
9511 		enterRule(_localctx, 166, RULE_windowFrameExtent);
9512 		try {
9513 			setState(1737);
9514 			_errHandler.sync(this);
9515 			switch (_input.LA(1)) {
9516 			case CURRENT:
9517 			case UNBOUNDED:
9518 			case NUMBER_:
9519 				enterOuterAlt(_localctx, 1);
9520 				{
9521 				setState(1735);
9522 				windowFramePreceding();
9523 				}
9524 				break;
9525 			case BETWEEN:
9526 				enterOuterAlt(_localctx, 2);
9527 				{
9528 				setState(1736);
9529 				windowFrameBetween();
9530 				}
9531 				break;
9532 			default:
9533 				throw new NoViableAltException(this);
9534 			}
9535 		}
9536 		catch (RecognitionException re) {
9537 			_localctx.exception = re;
9538 			_errHandler.reportError(this, re);
9539 			_errHandler.recover(this, re);
9540 		}
9541 		finally {
9542 			exitRule();
9543 		}
9544 		return _localctx;
9545 	}
9546 
9547 	public static class WindowFrameBetweenContext extends ParserRuleContext {
9548 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
9549 		public List<WindowFrameBoundContext> windowFrameBound() {
9550 			return getRuleContexts(WindowFrameBoundContext.class);
9551 		}
9552 		public WindowFrameBoundContext windowFrameBound(int i) {
9553 			return getRuleContext(WindowFrameBoundContext.class,i);
9554 		}
9555 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
9556 		public WindowFrameBetweenContext(ParserRuleContext parent, int invokingState) {
9557 			super(parent, invokingState);
9558 		}
9559 		@Override public int getRuleIndex() { return RULE_windowFrameBetween; }
9560 		@Override
9561 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9562 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBetween(this);
9563 			else return visitor.visitChildren(this);
9564 		}
9565 	}
9566 
9567 	public final WindowFrameBetweenContext windowFrameBetween() throws RecognitionException {
9568 		WindowFrameBetweenContext _localctx = new WindowFrameBetweenContext(_ctx, getState());
9569 		enterRule(_localctx, 168, RULE_windowFrameBetween);
9570 		try {
9571 			enterOuterAlt(_localctx, 1);
9572 			{
9573 			setState(1739);
9574 			match(BETWEEN);
9575 			setState(1740);
9576 			windowFrameBound();
9577 			setState(1741);
9578 			match(AND);
9579 			setState(1742);
9580 			windowFrameBound();
9581 			}
9582 		}
9583 		catch (RecognitionException re) {
9584 			_localctx.exception = re;
9585 			_errHandler.reportError(this, re);
9586 			_errHandler.recover(this, re);
9587 		}
9588 		finally {
9589 			exitRule();
9590 		}
9591 		return _localctx;
9592 	}
9593 
9594 	public static class WindowFrameBoundContext extends ParserRuleContext {
9595 		public WindowFramePrecedingContext windowFramePreceding() {
9596 			return getRuleContext(WindowFramePrecedingContext.class,0);
9597 		}
9598 		public WindowFrameFollowingContext windowFrameFollowing() {
9599 			return getRuleContext(WindowFrameFollowingContext.class,0);
9600 		}
9601 		public WindowFrameBoundContext(ParserRuleContext parent, int invokingState) {
9602 			super(parent, invokingState);
9603 		}
9604 		@Override public int getRuleIndex() { return RULE_windowFrameBound; }
9605 		@Override
9606 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9607 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBound(this);
9608 			else return visitor.visitChildren(this);
9609 		}
9610 	}
9611 
9612 	public final WindowFrameBoundContext windowFrameBound() throws RecognitionException {
9613 		WindowFrameBoundContext _localctx = new WindowFrameBoundContext(_ctx, getState());
9614 		enterRule(_localctx, 170, RULE_windowFrameBound);
9615 		try {
9616 			setState(1746);
9617 			_errHandler.sync(this);
9618 			switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) {
9619 			case 1:
9620 				enterOuterAlt(_localctx, 1);
9621 				{
9622 				setState(1744);
9623 				windowFramePreceding();
9624 				}
9625 				break;
9626 			case 2:
9627 				enterOuterAlt(_localctx, 2);
9628 				{
9629 				setState(1745);
9630 				windowFrameFollowing();
9631 				}
9632 				break;
9633 			}
9634 		}
9635 		catch (RecognitionException re) {
9636 			_localctx.exception = re;
9637 			_errHandler.reportError(this, re);
9638 			_errHandler.recover(this, re);
9639 		}
9640 		finally {
9641 			exitRule();
9642 		}
9643 		return _localctx;
9644 	}
9645 
9646 	public static class WindowFramePrecedingContext extends ParserRuleContext {
9647 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
9648 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
9649 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9650 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
9651 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
9652 		public WindowFramePrecedingContext(ParserRuleContext parent, int invokingState) {
9653 			super(parent, invokingState);
9654 		}
9655 		@Override public int getRuleIndex() { return RULE_windowFramePreceding; }
9656 		@Override
9657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFramePreceding(this);
9659 			else return visitor.visitChildren(this);
9660 		}
9661 	}
9662 
9663 	public final WindowFramePrecedingContext windowFramePreceding() throws RecognitionException {
9664 		WindowFramePrecedingContext _localctx = new WindowFramePrecedingContext(_ctx, getState());
9665 		enterRule(_localctx, 172, RULE_windowFramePreceding);
9666 		try {
9667 			setState(1754);
9668 			_errHandler.sync(this);
9669 			switch (_input.LA(1)) {
9670 			case UNBOUNDED:
9671 				enterOuterAlt(_localctx, 1);
9672 				{
9673 				setState(1748);
9674 				match(UNBOUNDED);
9675 				setState(1749);
9676 				match(PRECEDING);
9677 				}
9678 				break;
9679 			case NUMBER_:
9680 				enterOuterAlt(_localctx, 2);
9681 				{
9682 				setState(1750);
9683 				match(NUMBER_);
9684 				setState(1751);
9685 				match(PRECEDING);
9686 				}
9687 				break;
9688 			case CURRENT:
9689 				enterOuterAlt(_localctx, 3);
9690 				{
9691 				setState(1752);
9692 				match(CURRENT);
9693 				setState(1753);
9694 				match(ROW);
9695 				}
9696 				break;
9697 			default:
9698 				throw new NoViableAltException(this);
9699 			}
9700 		}
9701 		catch (RecognitionException re) {
9702 			_localctx.exception = re;
9703 			_errHandler.reportError(this, re);
9704 			_errHandler.recover(this, re);
9705 		}
9706 		finally {
9707 			exitRule();
9708 		}
9709 		return _localctx;
9710 	}
9711 
9712 	public static class WindowFrameFollowingContext extends ParserRuleContext {
9713 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
9714 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
9715 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9716 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
9717 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
9718 		public WindowFrameFollowingContext(ParserRuleContext parent, int invokingState) {
9719 			super(parent, invokingState);
9720 		}
9721 		@Override public int getRuleIndex() { return RULE_windowFrameFollowing; }
9722 		@Override
9723 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9724 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameFollowing(this);
9725 			else return visitor.visitChildren(this);
9726 		}
9727 	}
9728 
9729 	public final WindowFrameFollowingContext windowFrameFollowing() throws RecognitionException {
9730 		WindowFrameFollowingContext _localctx = new WindowFrameFollowingContext(_ctx, getState());
9731 		enterRule(_localctx, 174, RULE_windowFrameFollowing);
9732 		try {
9733 			setState(1762);
9734 			_errHandler.sync(this);
9735 			switch (_input.LA(1)) {
9736 			case UNBOUNDED:
9737 				enterOuterAlt(_localctx, 1);
9738 				{
9739 				setState(1756);
9740 				match(UNBOUNDED);
9741 				setState(1757);
9742 				match(FOLLOWING);
9743 				}
9744 				break;
9745 			case NUMBER_:
9746 				enterOuterAlt(_localctx, 2);
9747 				{
9748 				setState(1758);
9749 				match(NUMBER_);
9750 				setState(1759);
9751 				match(FOLLOWING);
9752 				}
9753 				break;
9754 			case CURRENT:
9755 				enterOuterAlt(_localctx, 3);
9756 				{
9757 				setState(1760);
9758 				match(CURRENT);
9759 				setState(1761);
9760 				match(ROW);
9761 				}
9762 				break;
9763 			default:
9764 				throw new NoViableAltException(this);
9765 			}
9766 		}
9767 		catch (RecognitionException re) {
9768 			_localctx.exception = re;
9769 			_errHandler.reportError(this, re);
9770 			_errHandler.recover(this, re);
9771 		}
9772 		finally {
9773 			exitRule();
9774 		}
9775 		return _localctx;
9776 	}
9777 
9778 	public static class ColumnNameWithSortContext extends ParserRuleContext {
9779 		public ColumnNameContext columnName() {
9780 			return getRuleContext(ColumnNameContext.class,0);
9781 		}
9782 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
9783 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
9784 		public ColumnNameWithSortContext(ParserRuleContext parent, int invokingState) {
9785 			super(parent, invokingState);
9786 		}
9787 		@Override public int getRuleIndex() { return RULE_columnNameWithSort; }
9788 		@Override
9789 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9790 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNameWithSort(this);
9791 			else return visitor.visitChildren(this);
9792 		}
9793 	}
9794 
9795 	public final ColumnNameWithSortContext columnNameWithSort() throws RecognitionException {
9796 		ColumnNameWithSortContext _localctx = new ColumnNameWithSortContext(_ctx, getState());
9797 		enterRule(_localctx, 176, RULE_columnNameWithSort);
9798 		int _la;
9799 		try {
9800 			enterOuterAlt(_localctx, 1);
9801 			{
9802 			setState(1764);
9803 			columnName();
9804 			setState(1766);
9805 			_errHandler.sync(this);
9806 			_la = _input.LA(1);
9807 			if (_la==ASC || _la==DESC) {
9808 				{
9809 				setState(1765);
9810 				_la = _input.LA(1);
9811 				if ( !(_la==ASC || _la==DESC) ) {
9812 				_errHandler.recoverInline(this);
9813 				}
9814 				else {
9815 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9816 					_errHandler.reportMatch(this);
9817 					consume();
9818 				}
9819 				}
9820 			}
9821 
9822 			}
9823 		}
9824 		catch (RecognitionException re) {
9825 			_localctx.exception = re;
9826 			_errHandler.reportError(this, re);
9827 			_errHandler.recover(this, re);
9828 		}
9829 		finally {
9830 			exitRule();
9831 		}
9832 		return _localctx;
9833 	}
9834 
9835 	public static class IndexOptionContext extends ParserRuleContext {
9836 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
9837 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
9838 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9839 		public EqOnOffOptionContext eqOnOffOption() {
9840 			return getRuleContext(EqOnOffOptionContext.class,0);
9841 		}
9842 		public EqTimeContext eqTime() {
9843 			return getRuleContext(EqTimeContext.class,0);
9844 		}
9845 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
9846 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
9847 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
9848 		public CompressionOptionContext compressionOption() {
9849 			return getRuleContext(CompressionOptionContext.class,0);
9850 		}
9851 		public OnPartitionClauseContext onPartitionClause() {
9852 			return getRuleContext(OnPartitionClauseContext.class,0);
9853 		}
9854 		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
9855 			super(parent, invokingState);
9856 		}
9857 		@Override public int getRuleIndex() { return RULE_indexOption; }
9858 		@Override
9859 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9860 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOption(this);
9861 			else return visitor.visitChildren(this);
9862 		}
9863 	}
9864 
9865 	public final IndexOptionContext indexOption() throws RecognitionException {
9866 		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
9867 		enterRule(_localctx, 178, RULE_indexOption);
9868 		int _la;
9869 		try {
9870 			setState(1781);
9871 			_errHandler.sync(this);
9872 			switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) {
9873 			case 1:
9874 				enterOuterAlt(_localctx, 1);
9875 				{
9876 				setState(1768);
9877 				match(FILLFACTOR);
9878 				setState(1769);
9879 				match(EQ_);
9880 				setState(1770);
9881 				match(NUMBER_);
9882 				}
9883 				break;
9884 			case 2:
9885 				enterOuterAlt(_localctx, 2);
9886 				{
9887 				setState(1771);
9888 				eqOnOffOption();
9889 				}
9890 				break;
9891 			case 3:
9892 				enterOuterAlt(_localctx, 3);
9893 				{
9894 				setState(1772);
9895 				_la = _input.LA(1);
9896 				if ( !(_la==COMPRESSION_DELAY || _la==MAX_DURATION) ) {
9897 				_errHandler.recoverInline(this);
9898 				}
9899 				else {
9900 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9901 					_errHandler.reportMatch(this);
9902 					consume();
9903 				}
9904 				setState(1773);
9905 				eqTime();
9906 				}
9907 				break;
9908 			case 4:
9909 				enterOuterAlt(_localctx, 4);
9910 				{
9911 				setState(1774);
9912 				match(MAXDOP);
9913 				setState(1775);
9914 				match(EQ_);
9915 				setState(1776);
9916 				match(NUMBER_);
9917 				}
9918 				break;
9919 			case 5:
9920 				enterOuterAlt(_localctx, 5);
9921 				{
9922 				setState(1777);
9923 				compressionOption();
9924 				setState(1779);
9925 				_errHandler.sync(this);
9926 				_la = _input.LA(1);
9927 				if (_la==ON) {
9928 					{
9929 					setState(1778);
9930 					onPartitionClause();
9931 					}
9932 				}
9933 
9934 				}
9935 				break;
9936 			}
9937 		}
9938 		catch (RecognitionException re) {
9939 			_localctx.exception = re;
9940 			_errHandler.reportError(this, re);
9941 			_errHandler.recover(this, re);
9942 		}
9943 		finally {
9944 			exitRule();
9945 		}
9946 		return _localctx;
9947 	}
9948 
9949 	public static class CompressionOptionContext extends ParserRuleContext {
9950 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
9951 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
9952 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
9953 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
9954 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
9955 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
9956 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
9957 		public CompressionOptionContext(ParserRuleContext parent, int invokingState) {
9958 			super(parent, invokingState);
9959 		}
9960 		@Override public int getRuleIndex() { return RULE_compressionOption; }
9961 		@Override
9962 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9963 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompressionOption(this);
9964 			else return visitor.visitChildren(this);
9965 		}
9966 	}
9967 
9968 	public final CompressionOptionContext compressionOption() throws RecognitionException {
9969 		CompressionOptionContext _localctx = new CompressionOptionContext(_ctx, getState());
9970 		enterRule(_localctx, 180, RULE_compressionOption);
9971 		int _la;
9972 		try {
9973 			enterOuterAlt(_localctx, 1);
9974 			{
9975 			setState(1783);
9976 			match(DATA_COMPRESSION);
9977 			setState(1784);
9978 			match(EQ_);
9979 			setState(1785);
9980 			_la = _input.LA(1);
9981 			if ( !(((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (ROW - 224)) | (1L << (COLUMNSTORE - 224)) | (1L << (NONE - 224)) | (1L << (PAGE - 224)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
9982 			_errHandler.recoverInline(this);
9983 			}
9984 			else {
9985 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9986 				_errHandler.reportMatch(this);
9987 				consume();
9988 			}
9989 			}
9990 		}
9991 		catch (RecognitionException re) {
9992 			_localctx.exception = re;
9993 			_errHandler.reportError(this, re);
9994 			_errHandler.recover(this, re);
9995 		}
9996 		finally {
9997 			exitRule();
9998 		}
9999 		return _localctx;
10000 	}
10001 
10002 	public static class EqTimeContext extends ParserRuleContext {
10003 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10004 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10005 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
10006 		public EqTimeContext(ParserRuleContext parent, int invokingState) {
10007 			super(parent, invokingState);
10008 		}
10009 		@Override public int getRuleIndex() { return RULE_eqTime; }
10010 		@Override
10011 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10012 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqTime(this);
10013 			else return visitor.visitChildren(this);
10014 		}
10015 	}
10016 
10017 	public final EqTimeContext eqTime() throws RecognitionException {
10018 		EqTimeContext _localctx = new EqTimeContext(_ctx, getState());
10019 		enterRule(_localctx, 182, RULE_eqTime);
10020 		int _la;
10021 		try {
10022 			enterOuterAlt(_localctx, 1);
10023 			{
10024 			setState(1787);
10025 			match(EQ_);
10026 			setState(1788);
10027 			match(NUMBER_);
10028 			setState(1790);
10029 			_errHandler.sync(this);
10030 			_la = _input.LA(1);
10031 			if (_la==MINUTES) {
10032 				{
10033 				setState(1789);
10034 				match(MINUTES);
10035 				}
10036 			}
10037 
10038 			}
10039 		}
10040 		catch (RecognitionException re) {
10041 			_localctx.exception = re;
10042 			_errHandler.reportError(this, re);
10043 			_errHandler.recover(this, re);
10044 		}
10045 		finally {
10046 			exitRule();
10047 		}
10048 		return _localctx;
10049 	}
10050 
10051 	public static class EqOnOffOptionContext extends ParserRuleContext {
10052 		public EqKeyContext eqKey() {
10053 			return getRuleContext(EqKeyContext.class,0);
10054 		}
10055 		public EqOnOffContext eqOnOff() {
10056 			return getRuleContext(EqOnOffContext.class,0);
10057 		}
10058 		public EqOnOffOptionContext(ParserRuleContext parent, int invokingState) {
10059 			super(parent, invokingState);
10060 		}
10061 		@Override public int getRuleIndex() { return RULE_eqOnOffOption; }
10062 		@Override
10063 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10064 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOffOption(this);
10065 			else return visitor.visitChildren(this);
10066 		}
10067 	}
10068 
10069 	public final EqOnOffOptionContext eqOnOffOption() throws RecognitionException {
10070 		EqOnOffOptionContext _localctx = new EqOnOffOptionContext(_ctx, getState());
10071 		enterRule(_localctx, 184, RULE_eqOnOffOption);
10072 		try {
10073 			enterOuterAlt(_localctx, 1);
10074 			{
10075 			setState(1792);
10076 			eqKey();
10077 			setState(1793);
10078 			eqOnOff();
10079 			}
10080 		}
10081 		catch (RecognitionException re) {
10082 			_localctx.exception = re;
10083 			_errHandler.reportError(this, re);
10084 			_errHandler.recover(this, re);
10085 		}
10086 		finally {
10087 			exitRule();
10088 		}
10089 		return _localctx;
10090 	}
10091 
10092 	public static class EqKeyContext extends ParserRuleContext {
10093 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
10094 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
10095 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
10096 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
10097 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
10098 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
10099 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
10100 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
10101 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
10102 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
10103 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
10104 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
10105 		public EqKeyContext(ParserRuleContext parent, int invokingState) {
10106 			super(parent, invokingState);
10107 		}
10108 		@Override public int getRuleIndex() { return RULE_eqKey; }
10109 		@Override
10110 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10111 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqKey(this);
10112 			else return visitor.visitChildren(this);
10113 		}
10114 	}
10115 
10116 	public final EqKeyContext eqKey() throws RecognitionException {
10117 		EqKeyContext _localctx = new EqKeyContext(_ctx, getState());
10118 		enterRule(_localctx, 186, RULE_eqKey);
10119 		int _la;
10120 		try {
10121 			enterOuterAlt(_localctx, 1);
10122 			{
10123 			setState(1795);
10124 			_la = _input.LA(1);
10125 			if ( !(_la==ONLINE || _la==RESUMABLE || ((((_la - 381)) & ~0x3f) == 0 && ((1L << (_la - 381)) & ((1L << (ALLOW_PAGE_LOCKS - 381)) | (1L << (ALLOW_ROW_LOCKS - 381)) | (1L << (COMPRESSION_DELAY - 381)) | (1L << (STATISTICS_INCREMENTAL - 381)) | (1L << (STATISTICS_NORECOMPUTE - 381)) | (1L << (SORT_IN_TEMPDB - 381)) | (1L << (IGNORE_DUP_KEY - 381)) | (1L << (PAD_INDEX - 381)) | (1L << (DROP_EXISTING - 381)))) != 0) || _la==OPTIMIZE_FOR_SEQUENTIAL_KEY) ) {
10126 			_errHandler.recoverInline(this);
10127 			}
10128 			else {
10129 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10130 				_errHandler.reportMatch(this);
10131 				consume();
10132 			}
10133 			}
10134 		}
10135 		catch (RecognitionException re) {
10136 			_localctx.exception = re;
10137 			_errHandler.reportError(this, re);
10138 			_errHandler.recover(this, re);
10139 		}
10140 		finally {
10141 			exitRule();
10142 		}
10143 		return _localctx;
10144 	}
10145 
10146 	public static class EqOnOffContext extends ParserRuleContext {
10147 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10148 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10149 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
10150 		public EqOnOffContext(ParserRuleContext parent, int invokingState) {
10151 			super(parent, invokingState);
10152 		}
10153 		@Override public int getRuleIndex() { return RULE_eqOnOff; }
10154 		@Override
10155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOff(this);
10157 			else return visitor.visitChildren(this);
10158 		}
10159 	}
10160 
10161 	public final EqOnOffContext eqOnOff() throws RecognitionException {
10162 		EqOnOffContext _localctx = new EqOnOffContext(_ctx, getState());
10163 		enterRule(_localctx, 188, RULE_eqOnOff);
10164 		int _la;
10165 		try {
10166 			enterOuterAlt(_localctx, 1);
10167 			{
10168 			setState(1797);
10169 			match(EQ_);
10170 			setState(1798);
10171 			_la = _input.LA(1);
10172 			if ( !(_la==ON || _la==OFF) ) {
10173 			_errHandler.recoverInline(this);
10174 			}
10175 			else {
10176 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10177 				_errHandler.reportMatch(this);
10178 				consume();
10179 			}
10180 			}
10181 		}
10182 		catch (RecognitionException re) {
10183 			_localctx.exception = re;
10184 			_errHandler.reportError(this, re);
10185 			_errHandler.recover(this, re);
10186 		}
10187 		finally {
10188 			exitRule();
10189 		}
10190 		return _localctx;
10191 	}
10192 
10193 	public static class OnPartitionClauseContext extends ParserRuleContext {
10194 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10195 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
10196 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10197 		public PartitionExpressionsContext partitionExpressions() {
10198 			return getRuleContext(PartitionExpressionsContext.class,0);
10199 		}
10200 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10201 		public OnPartitionClauseContext(ParserRuleContext parent, int invokingState) {
10202 			super(parent, invokingState);
10203 		}
10204 		@Override public int getRuleIndex() { return RULE_onPartitionClause; }
10205 		@Override
10206 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10207 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnPartitionClause(this);
10208 			else return visitor.visitChildren(this);
10209 		}
10210 	}
10211 
10212 	public final OnPartitionClauseContext onPartitionClause() throws RecognitionException {
10213 		OnPartitionClauseContext _localctx = new OnPartitionClauseContext(_ctx, getState());
10214 		enterRule(_localctx, 190, RULE_onPartitionClause);
10215 		try {
10216 			enterOuterAlt(_localctx, 1);
10217 			{
10218 			setState(1800);
10219 			match(ON);
10220 			setState(1801);
10221 			match(PARTITIONS);
10222 			setState(1802);
10223 			match(LP_);
10224 			setState(1803);
10225 			partitionExpressions();
10226 			setState(1804);
10227 			match(RP_);
10228 			}
10229 		}
10230 		catch (RecognitionException re) {
10231 			_localctx.exception = re;
10232 			_errHandler.reportError(this, re);
10233 			_errHandler.recover(this, re);
10234 		}
10235 		finally {
10236 			exitRule();
10237 		}
10238 		return _localctx;
10239 	}
10240 
10241 	public static class PartitionExpressionsContext extends ParserRuleContext {
10242 		public List<PartitionExpressionContext> partitionExpression() {
10243 			return getRuleContexts(PartitionExpressionContext.class);
10244 		}
10245 		public PartitionExpressionContext partitionExpression(int i) {
10246 			return getRuleContext(PartitionExpressionContext.class,i);
10247 		}
10248 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10249 		public TerminalNode COMMA_(int i) {
10250 			return getToken(SQLServerStatementParser.COMMA_, i);
10251 		}
10252 		public PartitionExpressionsContext(ParserRuleContext parent, int invokingState) {
10253 			super(parent, invokingState);
10254 		}
10255 		@Override public int getRuleIndex() { return RULE_partitionExpressions; }
10256 		@Override
10257 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10258 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpressions(this);
10259 			else return visitor.visitChildren(this);
10260 		}
10261 	}
10262 
10263 	public final PartitionExpressionsContext partitionExpressions() throws RecognitionException {
10264 		PartitionExpressionsContext _localctx = new PartitionExpressionsContext(_ctx, getState());
10265 		enterRule(_localctx, 192, RULE_partitionExpressions);
10266 		int _la;
10267 		try {
10268 			enterOuterAlt(_localctx, 1);
10269 			{
10270 			setState(1806);
10271 			partitionExpression();
10272 			setState(1811);
10273 			_errHandler.sync(this);
10274 			_la = _input.LA(1);
10275 			while (_la==COMMA_) {
10276 				{
10277 				{
10278 				setState(1807);
10279 				match(COMMA_);
10280 				setState(1808);
10281 				partitionExpression();
10282 				}
10283 				}
10284 				setState(1813);
10285 				_errHandler.sync(this);
10286 				_la = _input.LA(1);
10287 			}
10288 			}
10289 		}
10290 		catch (RecognitionException re) {
10291 			_localctx.exception = re;
10292 			_errHandler.reportError(this, re);
10293 			_errHandler.recover(this, re);
10294 		}
10295 		finally {
10296 			exitRule();
10297 		}
10298 		return _localctx;
10299 	}
10300 
10301 	public static class PartitionExpressionContext extends ParserRuleContext {
10302 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10303 		public NumberRangeContext numberRange() {
10304 			return getRuleContext(NumberRangeContext.class,0);
10305 		}
10306 		public PartitionExpressionContext(ParserRuleContext parent, int invokingState) {
10307 			super(parent, invokingState);
10308 		}
10309 		@Override public int getRuleIndex() { return RULE_partitionExpression; }
10310 		@Override
10311 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10312 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpression(this);
10313 			else return visitor.visitChildren(this);
10314 		}
10315 	}
10316 
10317 	public final PartitionExpressionContext partitionExpression() throws RecognitionException {
10318 		PartitionExpressionContext _localctx = new PartitionExpressionContext(_ctx, getState());
10319 		enterRule(_localctx, 194, RULE_partitionExpression);
10320 		try {
10321 			setState(1816);
10322 			_errHandler.sync(this);
10323 			switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
10324 			case 1:
10325 				enterOuterAlt(_localctx, 1);
10326 				{
10327 				setState(1814);
10328 				match(NUMBER_);
10329 				}
10330 				break;
10331 			case 2:
10332 				enterOuterAlt(_localctx, 2);
10333 				{
10334 				setState(1815);
10335 				numberRange();
10336 				}
10337 				break;
10338 			}
10339 		}
10340 		catch (RecognitionException re) {
10341 			_localctx.exception = re;
10342 			_errHandler.reportError(this, re);
10343 			_errHandler.recover(this, re);
10344 		}
10345 		finally {
10346 			exitRule();
10347 		}
10348 		return _localctx;
10349 	}
10350 
10351 	public static class NumberRangeContext extends ParserRuleContext {
10352 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
10353 		public TerminalNode NUMBER_(int i) {
10354 			return getToken(SQLServerStatementParser.NUMBER_, i);
10355 		}
10356 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
10357 		public NumberRangeContext(ParserRuleContext parent, int invokingState) {
10358 			super(parent, invokingState);
10359 		}
10360 		@Override public int getRuleIndex() { return RULE_numberRange; }
10361 		@Override
10362 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10363 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberRange(this);
10364 			else return visitor.visitChildren(this);
10365 		}
10366 	}
10367 
10368 	public final NumberRangeContext numberRange() throws RecognitionException {
10369 		NumberRangeContext _localctx = new NumberRangeContext(_ctx, getState());
10370 		enterRule(_localctx, 196, RULE_numberRange);
10371 		try {
10372 			enterOuterAlt(_localctx, 1);
10373 			{
10374 			setState(1818);
10375 			match(NUMBER_);
10376 			setState(1819);
10377 			match(TO);
10378 			setState(1820);
10379 			match(NUMBER_);
10380 			}
10381 		}
10382 		catch (RecognitionException re) {
10383 			_localctx.exception = re;
10384 			_errHandler.reportError(this, re);
10385 			_errHandler.recover(this, re);
10386 		}
10387 		finally {
10388 			exitRule();
10389 		}
10390 		return _localctx;
10391 	}
10392 
10393 	public static class LowPriorityLockWaitContext extends ParserRuleContext {
10394 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
10395 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10396 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
10397 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
10398 		public TerminalNode EQ_(int i) {
10399 			return getToken(SQLServerStatementParser.EQ_, i);
10400 		}
10401 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10402 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
10403 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
10404 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10405 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
10406 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
10407 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
10408 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
10409 		public LowPriorityLockWaitContext(ParserRuleContext parent, int invokingState) {
10410 			super(parent, invokingState);
10411 		}
10412 		@Override public int getRuleIndex() { return RULE_lowPriorityLockWait; }
10413 		@Override
10414 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10415 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLowPriorityLockWait(this);
10416 			else return visitor.visitChildren(this);
10417 		}
10418 	}
10419 
10420 	public final LowPriorityLockWaitContext lowPriorityLockWait() throws RecognitionException {
10421 		LowPriorityLockWaitContext _localctx = new LowPriorityLockWaitContext(_ctx, getState());
10422 		enterRule(_localctx, 198, RULE_lowPriorityLockWait);
10423 		int _la;
10424 		try {
10425 			enterOuterAlt(_localctx, 1);
10426 			{
10427 			setState(1822);
10428 			match(WAIT_AT_LOW_PRIORITY);
10429 			setState(1823);
10430 			match(LP_);
10431 			setState(1824);
10432 			match(MAX_DURATION);
10433 			setState(1825);
10434 			match(EQ_);
10435 			setState(1826);
10436 			match(NUMBER_);
10437 			setState(1828);
10438 			_errHandler.sync(this);
10439 			_la = _input.LA(1);
10440 			if (_la==MINUTES) {
10441 				{
10442 				setState(1827);
10443 				match(MINUTES);
10444 				}
10445 			}
10446 
10447 			setState(1830);
10448 			match(COMMA_);
10449 			setState(1831);
10450 			match(ABORT_AFTER_WAIT);
10451 			setState(1832);
10452 			match(EQ_);
10453 			setState(1833);
10454 			_la = _input.LA(1);
10455 			if ( !(((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (BLOCKERS - 243)) | (1L << (NONE - 243)) | (1L << (SELF - 243)))) != 0)) ) {
10456 			_errHandler.recoverInline(this);
10457 			}
10458 			else {
10459 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10460 				_errHandler.reportMatch(this);
10461 				consume();
10462 			}
10463 			setState(1834);
10464 			match(RP_);
10465 			}
10466 		}
10467 		catch (RecognitionException re) {
10468 			_localctx.exception = re;
10469 			_errHandler.reportError(this, re);
10470 			_errHandler.recover(this, re);
10471 		}
10472 		finally {
10473 			exitRule();
10474 		}
10475 		return _localctx;
10476 	}
10477 
10478 	public static class OnLowPriorLockWaitContext extends ParserRuleContext {
10479 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10480 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10481 		public LowPriorityLockWaitContext lowPriorityLockWait() {
10482 			return getRuleContext(LowPriorityLockWaitContext.class,0);
10483 		}
10484 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10485 		public OnLowPriorLockWaitContext(ParserRuleContext parent, int invokingState) {
10486 			super(parent, invokingState);
10487 		}
10488 		@Override public int getRuleIndex() { return RULE_onLowPriorLockWait; }
10489 		@Override
10490 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10491 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnLowPriorLockWait(this);
10492 			else return visitor.visitChildren(this);
10493 		}
10494 	}
10495 
10496 	public final OnLowPriorLockWaitContext onLowPriorLockWait() throws RecognitionException {
10497 		OnLowPriorLockWaitContext _localctx = new OnLowPriorLockWaitContext(_ctx, getState());
10498 		enterRule(_localctx, 200, RULE_onLowPriorLockWait);
10499 		int _la;
10500 		try {
10501 			enterOuterAlt(_localctx, 1);
10502 			{
10503 			setState(1836);
10504 			match(ON);
10505 			setState(1841);
10506 			_errHandler.sync(this);
10507 			_la = _input.LA(1);
10508 			if (_la==LP_) {
10509 				{
10510 				setState(1837);
10511 				match(LP_);
10512 				setState(1838);
10513 				lowPriorityLockWait();
10514 				setState(1839);
10515 				match(RP_);
10516 				}
10517 			}
10518 
10519 			}
10520 		}
10521 		catch (RecognitionException re) {
10522 			_localctx.exception = re;
10523 			_errHandler.reportError(this, re);
10524 			_errHandler.recover(this, re);
10525 		}
10526 		finally {
10527 			exitRule();
10528 		}
10529 		return _localctx;
10530 	}
10531 
10532 	public static class IgnoredIdentifierContext extends ParserRuleContext {
10533 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
10534 		public IgnoredIdentifierContext(ParserRuleContext parent, int invokingState) {
10535 			super(parent, invokingState);
10536 		}
10537 		@Override public int getRuleIndex() { return RULE_ignoredIdentifier; }
10538 		@Override
10539 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10540 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifier(this);
10541 			else return visitor.visitChildren(this);
10542 		}
10543 	}
10544 
10545 	public final IgnoredIdentifierContext ignoredIdentifier() throws RecognitionException {
10546 		IgnoredIdentifierContext _localctx = new IgnoredIdentifierContext(_ctx, getState());
10547 		enterRule(_localctx, 202, RULE_ignoredIdentifier);
10548 		try {
10549 			enterOuterAlt(_localctx, 1);
10550 			{
10551 			setState(1843);
10552 			match(IDENTIFIER_);
10553 			}
10554 		}
10555 		catch (RecognitionException re) {
10556 			_localctx.exception = re;
10557 			_errHandler.reportError(this, re);
10558 			_errHandler.recover(this, re);
10559 		}
10560 		finally {
10561 			exitRule();
10562 		}
10563 		return _localctx;
10564 	}
10565 
10566 	public static class IgnoredIdentifiersContext extends ParserRuleContext {
10567 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
10568 			return getRuleContexts(IgnoredIdentifierContext.class);
10569 		}
10570 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
10571 			return getRuleContext(IgnoredIdentifierContext.class,i);
10572 		}
10573 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10574 		public TerminalNode COMMA_(int i) {
10575 			return getToken(SQLServerStatementParser.COMMA_, i);
10576 		}
10577 		public IgnoredIdentifiersContext(ParserRuleContext parent, int invokingState) {
10578 			super(parent, invokingState);
10579 		}
10580 		@Override public int getRuleIndex() { return RULE_ignoredIdentifiers; }
10581 		@Override
10582 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10583 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifiers(this);
10584 			else return visitor.visitChildren(this);
10585 		}
10586 	}
10587 
10588 	public final IgnoredIdentifiersContext ignoredIdentifiers() throws RecognitionException {
10589 		IgnoredIdentifiersContext _localctx = new IgnoredIdentifiersContext(_ctx, getState());
10590 		enterRule(_localctx, 204, RULE_ignoredIdentifiers);
10591 		try {
10592 			int _alt;
10593 			enterOuterAlt(_localctx, 1);
10594 			{
10595 			setState(1845);
10596 			ignoredIdentifier();
10597 			setState(1850);
10598 			_errHandler.sync(this);
10599 			_alt = getInterpreter().adaptivePredict(_input,106,_ctx);
10600 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
10601 				if ( _alt==1 ) {
10602 					{
10603 					{
10604 					setState(1846);
10605 					match(COMMA_);
10606 					setState(1847);
10607 					ignoredIdentifier();
10608 					}
10609 					} 
10610 				}
10611 				setState(1852);
10612 				_errHandler.sync(this);
10613 				_alt = getInterpreter().adaptivePredict(_input,106,_ctx);
10614 			}
10615 			}
10616 		}
10617 		catch (RecognitionException re) {
10618 			_localctx.exception = re;
10619 			_errHandler.reportError(this, re);
10620 			_errHandler.recover(this, re);
10621 		}
10622 		finally {
10623 			exitRule();
10624 		}
10625 		return _localctx;
10626 	}
10627 
10628 	public static class MatchNoneContext extends ParserRuleContext {
10629 		public MatchNoneContext(ParserRuleContext parent, int invokingState) {
10630 			super(parent, invokingState);
10631 		}
10632 		@Override public int getRuleIndex() { return RULE_matchNone; }
10633 		@Override
10634 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10635 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMatchNone(this);
10636 			else return visitor.visitChildren(this);
10637 		}
10638 	}
10639 
10640 	public final MatchNoneContext matchNone() throws RecognitionException {
10641 		MatchNoneContext _localctx = new MatchNoneContext(_ctx, getState());
10642 		enterRule(_localctx, 206, RULE_matchNone);
10643 		try {
10644 			enterOuterAlt(_localctx, 1);
10645 			{
10646 			setState(1853);
10647 			match(T__0);
10648 			}
10649 		}
10650 		catch (RecognitionException re) {
10651 			_localctx.exception = re;
10652 			_errHandler.reportError(this, re);
10653 			_errHandler.recover(this, re);
10654 		}
10655 		finally {
10656 			exitRule();
10657 		}
10658 		return _localctx;
10659 	}
10660 
10661 	public static class VariableNameContext extends ParserRuleContext {
10662 		public IdentifierContext identifier() {
10663 			return getRuleContext(IdentifierContext.class,0);
10664 		}
10665 		public VariableNameContext(ParserRuleContext parent, int invokingState) {
10666 			super(parent, invokingState);
10667 		}
10668 		@Override public int getRuleIndex() { return RULE_variableName; }
10669 		@Override
10670 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10671 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableName(this);
10672 			else return visitor.visitChildren(this);
10673 		}
10674 	}
10675 
10676 	public final VariableNameContext variableName() throws RecognitionException {
10677 		VariableNameContext _localctx = new VariableNameContext(_ctx, getState());
10678 		enterRule(_localctx, 208, RULE_variableName);
10679 		try {
10680 			enterOuterAlt(_localctx, 1);
10681 			{
10682 			setState(1855);
10683 			identifier();
10684 			}
10685 		}
10686 		catch (RecognitionException re) {
10687 			_localctx.exception = re;
10688 			_errHandler.reportError(this, re);
10689 			_errHandler.recover(this, re);
10690 		}
10691 		finally {
10692 			exitRule();
10693 		}
10694 		return _localctx;
10695 	}
10696 
10697 	public static class ExecuteAsClauseContext extends ParserRuleContext {
10698 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
10699 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
10700 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
10701 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
10702 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
10703 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
10704 		public StringLiteralsContext stringLiterals() {
10705 			return getRuleContext(StringLiteralsContext.class,0);
10706 		}
10707 		public ExecuteAsClauseContext(ParserRuleContext parent, int invokingState) {
10708 			super(parent, invokingState);
10709 		}
10710 		@Override public int getRuleIndex() { return RULE_executeAsClause; }
10711 		@Override
10712 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10713 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecuteAsClause(this);
10714 			else return visitor.visitChildren(this);
10715 		}
10716 	}
10717 
10718 	public final ExecuteAsClauseContext executeAsClause() throws RecognitionException {
10719 		ExecuteAsClauseContext _localctx = new ExecuteAsClauseContext(_ctx, getState());
10720 		enterRule(_localctx, 210, RULE_executeAsClause);
10721 		int _la;
10722 		try {
10723 			enterOuterAlt(_localctx, 1);
10724 			{
10725 			setState(1857);
10726 			_la = _input.LA(1);
10727 			if ( !(_la==EXECUTE || _la==EXEC) ) {
10728 			_errHandler.recoverInline(this);
10729 			}
10730 			else {
10731 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10732 				_errHandler.reportMatch(this);
10733 				consume();
10734 			}
10735 			setState(1858);
10736 			match(AS);
10737 			setState(1863);
10738 			_errHandler.sync(this);
10739 			switch (_input.LA(1)) {
10740 			case CALLER:
10741 				{
10742 				setState(1859);
10743 				match(CALLER);
10744 				}
10745 				break;
10746 			case SELF:
10747 				{
10748 				setState(1860);
10749 				match(SELF);
10750 				}
10751 				break;
10752 			case OWNER:
10753 				{
10754 				setState(1861);
10755 				match(OWNER);
10756 				}
10757 				break;
10758 			case STRING_:
10759 			case NCHAR_TEXT:
10760 				{
10761 				setState(1862);
10762 				stringLiterals();
10763 				}
10764 				break;
10765 			default:
10766 				throw new NoViableAltException(this);
10767 			}
10768 			}
10769 		}
10770 		catch (RecognitionException re) {
10771 			_localctx.exception = re;
10772 			_errHandler.reportError(this, re);
10773 			_errHandler.recover(this, re);
10774 		}
10775 		finally {
10776 			exitRule();
10777 		}
10778 		return _localctx;
10779 	}
10780 
10781 	public static class TransactionNameContext extends ParserRuleContext {
10782 		public IdentifierContext identifier() {
10783 			return getRuleContext(IdentifierContext.class,0);
10784 		}
10785 		public TransactionNameContext(ParserRuleContext parent, int invokingState) {
10786 			super(parent, invokingState);
10787 		}
10788 		@Override public int getRuleIndex() { return RULE_transactionName; }
10789 		@Override
10790 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10791 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionName(this);
10792 			else return visitor.visitChildren(this);
10793 		}
10794 	}
10795 
10796 	public final TransactionNameContext transactionName() throws RecognitionException {
10797 		TransactionNameContext _localctx = new TransactionNameContext(_ctx, getState());
10798 		enterRule(_localctx, 212, RULE_transactionName);
10799 		try {
10800 			enterOuterAlt(_localctx, 1);
10801 			{
10802 			setState(1865);
10803 			identifier();
10804 			}
10805 		}
10806 		catch (RecognitionException re) {
10807 			_localctx.exception = re;
10808 			_errHandler.reportError(this, re);
10809 			_errHandler.recover(this, re);
10810 		}
10811 		finally {
10812 			exitRule();
10813 		}
10814 		return _localctx;
10815 	}
10816 
10817 	public static class TransactionVariableNameContext extends ParserRuleContext {
10818 		public VariableNameContext variableName() {
10819 			return getRuleContext(VariableNameContext.class,0);
10820 		}
10821 		public TransactionVariableNameContext(ParserRuleContext parent, int invokingState) {
10822 			super(parent, invokingState);
10823 		}
10824 		@Override public int getRuleIndex() { return RULE_transactionVariableName; }
10825 		@Override
10826 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10827 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionVariableName(this);
10828 			else return visitor.visitChildren(this);
10829 		}
10830 	}
10831 
10832 	public final TransactionVariableNameContext transactionVariableName() throws RecognitionException {
10833 		TransactionVariableNameContext _localctx = new TransactionVariableNameContext(_ctx, getState());
10834 		enterRule(_localctx, 214, RULE_transactionVariableName);
10835 		try {
10836 			enterOuterAlt(_localctx, 1);
10837 			{
10838 			setState(1867);
10839 			variableName();
10840 			}
10841 		}
10842 		catch (RecognitionException re) {
10843 			_localctx.exception = re;
10844 			_errHandler.reportError(this, re);
10845 			_errHandler.recover(this, re);
10846 		}
10847 		finally {
10848 			exitRule();
10849 		}
10850 		return _localctx;
10851 	}
10852 
10853 	public static class SavepointNameContext extends ParserRuleContext {
10854 		public IdentifierContext identifier() {
10855 			return getRuleContext(IdentifierContext.class,0);
10856 		}
10857 		public SavepointNameContext(ParserRuleContext parent, int invokingState) {
10858 			super(parent, invokingState);
10859 		}
10860 		@Override public int getRuleIndex() { return RULE_savepointName; }
10861 		@Override
10862 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10863 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointName(this);
10864 			else return visitor.visitChildren(this);
10865 		}
10866 	}
10867 
10868 	public final SavepointNameContext savepointName() throws RecognitionException {
10869 		SavepointNameContext _localctx = new SavepointNameContext(_ctx, getState());
10870 		enterRule(_localctx, 216, RULE_savepointName);
10871 		try {
10872 			enterOuterAlt(_localctx, 1);
10873 			{
10874 			setState(1869);
10875 			identifier();
10876 			}
10877 		}
10878 		catch (RecognitionException re) {
10879 			_localctx.exception = re;
10880 			_errHandler.reportError(this, re);
10881 			_errHandler.recover(this, re);
10882 		}
10883 		finally {
10884 			exitRule();
10885 		}
10886 		return _localctx;
10887 	}
10888 
10889 	public static class SavepointVariableNameContext extends ParserRuleContext {
10890 		public VariableNameContext variableName() {
10891 			return getRuleContext(VariableNameContext.class,0);
10892 		}
10893 		public SavepointVariableNameContext(ParserRuleContext parent, int invokingState) {
10894 			super(parent, invokingState);
10895 		}
10896 		@Override public int getRuleIndex() { return RULE_savepointVariableName; }
10897 		@Override
10898 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10899 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointVariableName(this);
10900 			else return visitor.visitChildren(this);
10901 		}
10902 	}
10903 
10904 	public final SavepointVariableNameContext savepointVariableName() throws RecognitionException {
10905 		SavepointVariableNameContext _localctx = new SavepointVariableNameContext(_ctx, getState());
10906 		enterRule(_localctx, 218, RULE_savepointVariableName);
10907 		try {
10908 			enterOuterAlt(_localctx, 1);
10909 			{
10910 			setState(1871);
10911 			variableName();
10912 			}
10913 		}
10914 		catch (RecognitionException re) {
10915 			_localctx.exception = re;
10916 			_errHandler.reportError(this, re);
10917 			_errHandler.recover(this, re);
10918 		}
10919 		finally {
10920 			exitRule();
10921 		}
10922 		return _localctx;
10923 	}
10924 
10925 	public static class EntityTypeContext extends ParserRuleContext {
10926 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
10927 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
10928 		public EntityTypeContext(ParserRuleContext parent, int invokingState) {
10929 			super(parent, invokingState);
10930 		}
10931 		@Override public int getRuleIndex() { return RULE_entityType; }
10932 		@Override
10933 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10934 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEntityType(this);
10935 			else return visitor.visitChildren(this);
10936 		}
10937 	}
10938 
10939 	public final EntityTypeContext entityType() throws RecognitionException {
10940 		EntityTypeContext _localctx = new EntityTypeContext(_ctx, getState());
10941 		enterRule(_localctx, 220, RULE_entityType);
10942 		int _la;
10943 		try {
10944 			enterOuterAlt(_localctx, 1);
10945 			{
10946 			setState(1873);
10947 			_la = _input.LA(1);
10948 			if ( !(_la==TYPE || _la==OBJECT) ) {
10949 			_errHandler.recoverInline(this);
10950 			}
10951 			else {
10952 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10953 				_errHandler.reportMatch(this);
10954 				consume();
10955 			}
10956 			}
10957 		}
10958 		catch (RecognitionException re) {
10959 			_localctx.exception = re;
10960 			_errHandler.reportError(this, re);
10961 			_errHandler.recover(this, re);
10962 		}
10963 		finally {
10964 			exitRule();
10965 		}
10966 		return _localctx;
10967 	}
10968 
10969 	public static class IfExistsContext extends ParserRuleContext {
10970 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
10971 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
10972 		public IfExistsContext(ParserRuleContext parent, int invokingState) {
10973 			super(parent, invokingState);
10974 		}
10975 		@Override public int getRuleIndex() { return RULE_ifExists; }
10976 		@Override
10977 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10978 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIfExists(this);
10979 			else return visitor.visitChildren(this);
10980 		}
10981 	}
10982 
10983 	public final IfExistsContext ifExists() throws RecognitionException {
10984 		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
10985 		enterRule(_localctx, 222, RULE_ifExists);
10986 		try {
10987 			enterOuterAlt(_localctx, 1);
10988 			{
10989 			setState(1875);
10990 			match(IF);
10991 			setState(1876);
10992 			match(EXISTS);
10993 			}
10994 		}
10995 		catch (RecognitionException re) {
10996 			_localctx.exception = re;
10997 			_errHandler.reportError(this, re);
10998 			_errHandler.recover(this, re);
10999 		}
11000 		finally {
11001 			exitRule();
11002 		}
11003 		return _localctx;
11004 	}
11005 
11006 	public static class CallContext extends ParserRuleContext {
11007 		public TerminalNode CALL() { return getToken(SQLServerStatementParser.CALL, 0); }
11008 		public CallContext(ParserRuleContext parent, int invokingState) {
11009 			super(parent, invokingState);
11010 		}
11011 		@Override public int getRuleIndex() { return RULE_call; }
11012 		@Override
11013 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11014 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCall(this);
11015 			else return visitor.visitChildren(this);
11016 		}
11017 	}
11018 
11019 	public final CallContext call() throws RecognitionException {
11020 		CallContext _localctx = new CallContext(_ctx, getState());
11021 		enterRule(_localctx, 224, RULE_call);
11022 		try {
11023 			enterOuterAlt(_localctx, 1);
11024 			{
11025 			setState(1878);
11026 			match(CALL);
11027 			}
11028 		}
11029 		catch (RecognitionException re) {
11030 			_localctx.exception = re;
11031 			_errHandler.reportError(this, re);
11032 			_errHandler.recover(this, re);
11033 		}
11034 		finally {
11035 			exitRule();
11036 		}
11037 		return _localctx;
11038 	}
11039 
11040 	public static class ExplainContext extends ParserRuleContext {
11041 		public TerminalNode EXPLAIN() { return getToken(SQLServerStatementParser.EXPLAIN, 0); }
11042 		public ExplainableStatementContext explainableStatement() {
11043 			return getRuleContext(ExplainableStatementContext.class,0);
11044 		}
11045 		public TerminalNode WITH_RECOMMENDATIONS() { return getToken(SQLServerStatementParser.WITH_RECOMMENDATIONS, 0); }
11046 		public ExplainContext(ParserRuleContext parent, int invokingState) {
11047 			super(parent, invokingState);
11048 		}
11049 		@Override public int getRuleIndex() { return RULE_explain; }
11050 		@Override
11051 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11052 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplain(this);
11053 			else return visitor.visitChildren(this);
11054 		}
11055 	}
11056 
11057 	public final ExplainContext explain() throws RecognitionException {
11058 		ExplainContext _localctx = new ExplainContext(_ctx, getState());
11059 		enterRule(_localctx, 226, RULE_explain);
11060 		int _la;
11061 		try {
11062 			enterOuterAlt(_localctx, 1);
11063 			{
11064 			setState(1880);
11065 			match(EXPLAIN);
11066 			setState(1882);
11067 			_errHandler.sync(this);
11068 			_la = _input.LA(1);
11069 			if (_la==WITH_RECOMMENDATIONS) {
11070 				{
11071 				setState(1881);
11072 				match(WITH_RECOMMENDATIONS);
11073 				}
11074 			}
11075 
11076 			setState(1884);
11077 			explainableStatement();
11078 			}
11079 		}
11080 		catch (RecognitionException re) {
11081 			_localctx.exception = re;
11082 			_errHandler.reportError(this, re);
11083 			_errHandler.recover(this, re);
11084 		}
11085 		finally {
11086 			exitRule();
11087 		}
11088 		return _localctx;
11089 	}
11090 
11091 	public static class ExplainableStatementContext extends ParserRuleContext {
11092 		public SelectContext select() {
11093 			return getRuleContext(SelectContext.class,0);
11094 		}
11095 		public InsertContext insert() {
11096 			return getRuleContext(InsertContext.class,0);
11097 		}
11098 		public UpdateContext update() {
11099 			return getRuleContext(UpdateContext.class,0);
11100 		}
11101 		public DeleteContext delete() {
11102 			return getRuleContext(DeleteContext.class,0);
11103 		}
11104 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
11105 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
11106 		}
11107 		public ExplainableStatementContext(ParserRuleContext parent, int invokingState) {
11108 			super(parent, invokingState);
11109 		}
11110 		@Override public int getRuleIndex() { return RULE_explainableStatement; }
11111 		@Override
11112 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11113 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplainableStatement(this);
11114 			else return visitor.visitChildren(this);
11115 		}
11116 	}
11117 
11118 	public final ExplainableStatementContext explainableStatement() throws RecognitionException {
11119 		ExplainableStatementContext _localctx = new ExplainableStatementContext(_ctx, getState());
11120 		enterRule(_localctx, 228, RULE_explainableStatement);
11121 		try {
11122 			setState(1891);
11123 			_errHandler.sync(this);
11124 			switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) {
11125 			case 1:
11126 				enterOuterAlt(_localctx, 1);
11127 				{
11128 				setState(1886);
11129 				select();
11130 				}
11131 				break;
11132 			case 2:
11133 				enterOuterAlt(_localctx, 2);
11134 				{
11135 				setState(1887);
11136 				insert();
11137 				}
11138 				break;
11139 			case 3:
11140 				enterOuterAlt(_localctx, 3);
11141 				{
11142 				setState(1888);
11143 				update();
11144 				}
11145 				break;
11146 			case 4:
11147 				enterOuterAlt(_localctx, 4);
11148 				{
11149 				setState(1889);
11150 				delete();
11151 				}
11152 				break;
11153 			case 5:
11154 				enterOuterAlt(_localctx, 5);
11155 				{
11156 				setState(1890);
11157 				createTableAsSelectClause();
11158 				}
11159 				break;
11160 			}
11161 		}
11162 		catch (RecognitionException re) {
11163 			_localctx.exception = re;
11164 			_errHandler.reportError(this, re);
11165 			_errHandler.recover(this, re);
11166 		}
11167 		finally {
11168 			exitRule();
11169 		}
11170 		return _localctx;
11171 	}
11172 
11173 	public static class CreateTableContext extends ParserRuleContext {
11174 		public CreateTableClauseContext createTableClause() {
11175 			return getRuleContext(CreateTableClauseContext.class,0);
11176 		}
11177 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
11178 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
11179 		}
11180 		public CreateTableContext(ParserRuleContext parent, int invokingState) {
11181 			super(parent, invokingState);
11182 		}
11183 		@Override public int getRuleIndex() { return RULE_createTable; }
11184 		@Override
11185 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11186 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTable(this);
11187 			else return visitor.visitChildren(this);
11188 		}
11189 	}
11190 
11191 	public final CreateTableContext createTable() throws RecognitionException {
11192 		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
11193 		enterRule(_localctx, 230, RULE_createTable);
11194 		try {
11195 			setState(1895);
11196 			_errHandler.sync(this);
11197 			switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
11198 			case 1:
11199 				enterOuterAlt(_localctx, 1);
11200 				{
11201 				setState(1893);
11202 				createTableClause();
11203 				}
11204 				break;
11205 			case 2:
11206 				enterOuterAlt(_localctx, 2);
11207 				{
11208 				setState(1894);
11209 				createTableAsSelectClause();
11210 				}
11211 				break;
11212 			}
11213 		}
11214 		catch (RecognitionException re) {
11215 			_localctx.exception = re;
11216 			_errHandler.reportError(this, re);
11217 			_errHandler.recover(this, re);
11218 		}
11219 		finally {
11220 			exitRule();
11221 		}
11222 		return _localctx;
11223 	}
11224 
11225 	public static class CreateTableClauseContext extends ParserRuleContext {
11226 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11227 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
11228 		public TableNameContext tableName() {
11229 			return getRuleContext(TableNameContext.class,0);
11230 		}
11231 		public FileTableClauseContext fileTableClause() {
11232 			return getRuleContext(FileTableClauseContext.class,0);
11233 		}
11234 		public CreateDefinitionClauseContext createDefinitionClause() {
11235 			return getRuleContext(CreateDefinitionClauseContext.class,0);
11236 		}
11237 		public CreateTableClauseContext(ParserRuleContext parent, int invokingState) {
11238 			super(parent, invokingState);
11239 		}
11240 		@Override public int getRuleIndex() { return RULE_createTableClause; }
11241 		@Override
11242 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11243 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableClause(this);
11244 			else return visitor.visitChildren(this);
11245 		}
11246 	}
11247 
11248 	public final CreateTableClauseContext createTableClause() throws RecognitionException {
11249 		CreateTableClauseContext _localctx = new CreateTableClauseContext(_ctx, getState());
11250 		enterRule(_localctx, 232, RULE_createTableClause);
11251 		try {
11252 			enterOuterAlt(_localctx, 1);
11253 			{
11254 			setState(1897);
11255 			match(CREATE);
11256 			setState(1898);
11257 			match(TABLE);
11258 			setState(1899);
11259 			tableName();
11260 			setState(1900);
11261 			fileTableClause();
11262 			setState(1901);
11263 			createDefinitionClause();
11264 			}
11265 		}
11266 		catch (RecognitionException re) {
11267 			_localctx.exception = re;
11268 			_errHandler.reportError(this, re);
11269 			_errHandler.recover(this, re);
11270 		}
11271 		finally {
11272 			exitRule();
11273 		}
11274 		return _localctx;
11275 	}
11276 
11277 	public static class CreateIndexContext extends ParserRuleContext {
11278 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11279 		public CreateIndexSpecificationContext createIndexSpecification() {
11280 			return getRuleContext(CreateIndexSpecificationContext.class,0);
11281 		}
11282 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
11283 		public IndexNameContext indexName() {
11284 			return getRuleContext(IndexNameContext.class,0);
11285 		}
11286 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11287 		public TableNameContext tableName() {
11288 			return getRuleContext(TableNameContext.class,0);
11289 		}
11290 		public ColumnNamesWithSortContext columnNamesWithSort() {
11291 			return getRuleContext(ColumnNamesWithSortContext.class,0);
11292 		}
11293 		public CreateIndexClauseContext createIndexClause() {
11294 			return getRuleContext(CreateIndexClauseContext.class,0);
11295 		}
11296 		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
11297 			super(parent, invokingState);
11298 		}
11299 		@Override public int getRuleIndex() { return RULE_createIndex; }
11300 		@Override
11301 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11302 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndex(this);
11303 			else return visitor.visitChildren(this);
11304 		}
11305 	}
11306 
11307 	public final CreateIndexContext createIndex() throws RecognitionException {
11308 		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
11309 		enterRule(_localctx, 234, RULE_createIndex);
11310 		try {
11311 			enterOuterAlt(_localctx, 1);
11312 			{
11313 			setState(1903);
11314 			match(CREATE);
11315 			setState(1904);
11316 			createIndexSpecification();
11317 			setState(1905);
11318 			match(INDEX);
11319 			setState(1906);
11320 			indexName();
11321 			setState(1907);
11322 			match(ON);
11323 			setState(1908);
11324 			tableName();
11325 			setState(1909);
11326 			columnNamesWithSort();
11327 			setState(1910);
11328 			createIndexClause();
11329 			}
11330 		}
11331 		catch (RecognitionException re) {
11332 			_localctx.exception = re;
11333 			_errHandler.reportError(this, re);
11334 			_errHandler.recover(this, re);
11335 		}
11336 		finally {
11337 			exitRule();
11338 		}
11339 		return _localctx;
11340 	}
11341 
11342 	public static class CreateDatabaseContext extends ParserRuleContext {
11343 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11344 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
11345 		public DatabaseNameContext databaseName() {
11346 			return getRuleContext(DatabaseNameContext.class,0);
11347 		}
11348 		public CreateDatabaseClauseContext createDatabaseClause() {
11349 			return getRuleContext(CreateDatabaseClauseContext.class,0);
11350 		}
11351 		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
11352 			super(parent, invokingState);
11353 		}
11354 		@Override public int getRuleIndex() { return RULE_createDatabase; }
11355 		@Override
11356 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11357 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabase(this);
11358 			else return visitor.visitChildren(this);
11359 		}
11360 	}
11361 
11362 	public final CreateDatabaseContext createDatabase() throws RecognitionException {
11363 		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
11364 		enterRule(_localctx, 236, RULE_createDatabase);
11365 		try {
11366 			enterOuterAlt(_localctx, 1);
11367 			{
11368 			setState(1912);
11369 			match(CREATE);
11370 			setState(1913);
11371 			match(DATABASE);
11372 			setState(1914);
11373 			databaseName();
11374 			setState(1915);
11375 			createDatabaseClause();
11376 			}
11377 		}
11378 		catch (RecognitionException re) {
11379 			_localctx.exception = re;
11380 			_errHandler.reportError(this, re);
11381 			_errHandler.recover(this, re);
11382 		}
11383 		finally {
11384 			exitRule();
11385 		}
11386 		return _localctx;
11387 	}
11388 
11389 	public static class CreateFunctionContext extends ParserRuleContext {
11390 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11391 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
11392 		public FunctionNameContext functionName() {
11393 			return getRuleContext(FunctionNameContext.class,0);
11394 		}
11395 		public FuncParametersContext funcParameters() {
11396 			return getRuleContext(FuncParametersContext.class,0);
11397 		}
11398 		public FuncReturnsContext funcReturns() {
11399 			return getRuleContext(FuncReturnsContext.class,0);
11400 		}
11401 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11402 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11403 		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
11404 			super(parent, invokingState);
11405 		}
11406 		@Override public int getRuleIndex() { return RULE_createFunction; }
11407 		@Override
11408 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11409 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateFunction(this);
11410 			else return visitor.visitChildren(this);
11411 		}
11412 	}
11413 
11414 	public final CreateFunctionContext createFunction() throws RecognitionException {
11415 		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
11416 		enterRule(_localctx, 238, RULE_createFunction);
11417 		int _la;
11418 		try {
11419 			enterOuterAlt(_localctx, 1);
11420 			{
11421 			setState(1917);
11422 			match(CREATE);
11423 			setState(1920);
11424 			_errHandler.sync(this);
11425 			_la = _input.LA(1);
11426 			if (_la==OR) {
11427 				{
11428 				setState(1918);
11429 				match(OR);
11430 				setState(1919);
11431 				match(ALTER);
11432 				}
11433 			}
11434 
11435 			setState(1922);
11436 			match(FUNCTION);
11437 			setState(1923);
11438 			functionName();
11439 			setState(1924);
11440 			funcParameters();
11441 			setState(1925);
11442 			funcReturns();
11443 			}
11444 		}
11445 		catch (RecognitionException re) {
11446 			_localctx.exception = re;
11447 			_errHandler.reportError(this, re);
11448 			_errHandler.recover(this, re);
11449 		}
11450 		finally {
11451 			exitRule();
11452 		}
11453 		return _localctx;
11454 	}
11455 
11456 	public static class CreateProcedureContext extends ParserRuleContext {
11457 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11458 		public ProcedureNameContext procedureName() {
11459 			return getRuleContext(ProcedureNameContext.class,0);
11460 		}
11461 		public ProcParametersContext procParameters() {
11462 			return getRuleContext(ProcParametersContext.class,0);
11463 		}
11464 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
11465 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
11466 		}
11467 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
11468 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
11469 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11470 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11471 		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
11472 			super(parent, invokingState);
11473 		}
11474 		@Override public int getRuleIndex() { return RULE_createProcedure; }
11475 		@Override
11476 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11477 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateProcedure(this);
11478 			else return visitor.visitChildren(this);
11479 		}
11480 	}
11481 
11482 	public final CreateProcedureContext createProcedure() throws RecognitionException {
11483 		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
11484 		enterRule(_localctx, 240, RULE_createProcedure);
11485 		int _la;
11486 		try {
11487 			enterOuterAlt(_localctx, 1);
11488 			{
11489 			setState(1927);
11490 			match(CREATE);
11491 			setState(1930);
11492 			_errHandler.sync(this);
11493 			_la = _input.LA(1);
11494 			if (_la==OR) {
11495 				{
11496 				setState(1928);
11497 				match(OR);
11498 				setState(1929);
11499 				match(ALTER);
11500 				}
11501 			}
11502 
11503 			setState(1932);
11504 			_la = _input.LA(1);
11505 			if ( !(_la==PROCEDURE || _la==PROC) ) {
11506 			_errHandler.recoverInline(this);
11507 			}
11508 			else {
11509 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11510 				_errHandler.reportMatch(this);
11511 				consume();
11512 			}
11513 			setState(1933);
11514 			procedureName();
11515 			setState(1934);
11516 			procParameters();
11517 			setState(1935);
11518 			createOrAlterProcClause();
11519 			}
11520 		}
11521 		catch (RecognitionException re) {
11522 			_localctx.exception = re;
11523 			_errHandler.reportError(this, re);
11524 			_errHandler.recover(this, re);
11525 		}
11526 		finally {
11527 			exitRule();
11528 		}
11529 		return _localctx;
11530 	}
11531 
11532 	public static class CreateViewContext extends ParserRuleContext {
11533 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11534 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
11535 		public ViewNameContext viewName() {
11536 			return getRuleContext(ViewNameContext.class,0);
11537 		}
11538 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
11539 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
11540 		}
11541 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11542 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11543 		public CreateViewContext(ParserRuleContext parent, int invokingState) {
11544 			super(parent, invokingState);
11545 		}
11546 		@Override public int getRuleIndex() { return RULE_createView; }
11547 		@Override
11548 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11549 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateView(this);
11550 			else return visitor.visitChildren(this);
11551 		}
11552 	}
11553 
11554 	public final CreateViewContext createView() throws RecognitionException {
11555 		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
11556 		enterRule(_localctx, 242, RULE_createView);
11557 		int _la;
11558 		try {
11559 			enterOuterAlt(_localctx, 1);
11560 			{
11561 			setState(1937);
11562 			match(CREATE);
11563 			setState(1940);
11564 			_errHandler.sync(this);
11565 			_la = _input.LA(1);
11566 			if (_la==OR) {
11567 				{
11568 				setState(1938);
11569 				match(OR);
11570 				setState(1939);
11571 				match(ALTER);
11572 				}
11573 			}
11574 
11575 			setState(1942);
11576 			match(VIEW);
11577 			setState(1943);
11578 			viewName();
11579 			setState(1944);
11580 			createOrAlterViewClause();
11581 			}
11582 		}
11583 		catch (RecognitionException re) {
11584 			_localctx.exception = re;
11585 			_errHandler.reportError(this, re);
11586 			_errHandler.recover(this, re);
11587 		}
11588 		finally {
11589 			exitRule();
11590 		}
11591 		return _localctx;
11592 	}
11593 
11594 	public static class CreateTriggerContext extends ParserRuleContext {
11595 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11596 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
11597 		public TriggerNameContext triggerName() {
11598 			return getRuleContext(TriggerNameContext.class,0);
11599 		}
11600 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11601 		public TriggerTargetContext triggerTarget() {
11602 			return getRuleContext(TriggerTargetContext.class,0);
11603 		}
11604 		public CreateTriggerClauseContext createTriggerClause() {
11605 			return getRuleContext(CreateTriggerClauseContext.class,0);
11606 		}
11607 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11608 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11609 		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
11610 			super(parent, invokingState);
11611 		}
11612 		@Override public int getRuleIndex() { return RULE_createTrigger; }
11613 		@Override
11614 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11615 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTrigger(this);
11616 			else return visitor.visitChildren(this);
11617 		}
11618 	}
11619 
11620 	public final CreateTriggerContext createTrigger() throws RecognitionException {
11621 		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
11622 		enterRule(_localctx, 244, RULE_createTrigger);
11623 		int _la;
11624 		try {
11625 			enterOuterAlt(_localctx, 1);
11626 			{
11627 			setState(1946);
11628 			match(CREATE);
11629 			setState(1949);
11630 			_errHandler.sync(this);
11631 			_la = _input.LA(1);
11632 			if (_la==OR) {
11633 				{
11634 				setState(1947);
11635 				match(OR);
11636 				setState(1948);
11637 				match(ALTER);
11638 				}
11639 			}
11640 
11641 			setState(1951);
11642 			match(TRIGGER);
11643 			setState(1952);
11644 			triggerName();
11645 			setState(1953);
11646 			match(ON);
11647 			setState(1954);
11648 			triggerTarget();
11649 			setState(1955);
11650 			createTriggerClause();
11651 			}
11652 		}
11653 		catch (RecognitionException re) {
11654 			_localctx.exception = re;
11655 			_errHandler.reportError(this, re);
11656 			_errHandler.recover(this, re);
11657 		}
11658 		finally {
11659 			exitRule();
11660 		}
11661 		return _localctx;
11662 	}
11663 
11664 	public static class CreateSequenceContext extends ParserRuleContext {
11665 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11666 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
11667 		public SequenceNameContext sequenceName() {
11668 			return getRuleContext(SequenceNameContext.class,0);
11669 		}
11670 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
11671 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
11672 		}
11673 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
11674 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
11675 		}
11676 		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
11677 			super(parent, invokingState);
11678 		}
11679 		@Override public int getRuleIndex() { return RULE_createSequence; }
11680 		@Override
11681 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11682 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSequence(this);
11683 			else return visitor.visitChildren(this);
11684 		}
11685 	}
11686 
11687 	public final CreateSequenceContext createSequence() throws RecognitionException {
11688 		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
11689 		enterRule(_localctx, 246, RULE_createSequence);
11690 		int _la;
11691 		try {
11692 			enterOuterAlt(_localctx, 1);
11693 			{
11694 			setState(1957);
11695 			match(CREATE);
11696 			setState(1958);
11697 			match(SEQUENCE);
11698 			setState(1959);
11699 			sequenceName();
11700 			setState(1963);
11701 			_errHandler.sync(this);
11702 			_la = _input.LA(1);
11703 			while (_la==AS || _la==NO || _la==START || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & ((1L << (INCREMENT - 524)) | (1L << (CYCLE - 524)) | (1L << (CACHE - 524)) | (1L << (MINVALUE - 524)) | (1L << (MAXVALUE - 524)) | (1L << (RESTART - 524)))) != 0)) {
11704 				{
11705 				{
11706 				setState(1960);
11707 				createOrAlterSequenceClause();
11708 				}
11709 				}
11710 				setState(1965);
11711 				_errHandler.sync(this);
11712 				_la = _input.LA(1);
11713 			}
11714 			}
11715 		}
11716 		catch (RecognitionException re) {
11717 			_localctx.exception = re;
11718 			_errHandler.reportError(this, re);
11719 			_errHandler.recover(this, re);
11720 		}
11721 		finally {
11722 			exitRule();
11723 		}
11724 		return _localctx;
11725 	}
11726 
11727 	public static class CreateServiceContext extends ParserRuleContext {
11728 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11729 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
11730 		public ServiceNameContext serviceName() {
11731 			return getRuleContext(ServiceNameContext.class,0);
11732 		}
11733 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11734 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
11735 		public QueueNameContext queueName() {
11736 			return getRuleContext(QueueNameContext.class,0);
11737 		}
11738 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
11739 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
11740 		public CreateServiceClauseContext createServiceClause() {
11741 			return getRuleContext(CreateServiceClauseContext.class,0);
11742 		}
11743 		public CreateServiceContext(ParserRuleContext parent, int invokingState) {
11744 			super(parent, invokingState);
11745 		}
11746 		@Override public int getRuleIndex() { return RULE_createService; }
11747 		@Override
11748 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11749 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateService(this);
11750 			else return visitor.visitChildren(this);
11751 		}
11752 	}
11753 
11754 	public final CreateServiceContext createService() throws RecognitionException {
11755 		CreateServiceContext _localctx = new CreateServiceContext(_ctx, getState());
11756 		enterRule(_localctx, 248, RULE_createService);
11757 		int _la;
11758 		try {
11759 			enterOuterAlt(_localctx, 1);
11760 			{
11761 			setState(1966);
11762 			match(CREATE);
11763 			setState(1967);
11764 			match(SERVICE);
11765 			setState(1968);
11766 			serviceName();
11767 			setState(1971);
11768 			_errHandler.sync(this);
11769 			_la = _input.LA(1);
11770 			if (_la==AUTHORIZATION) {
11771 				{
11772 				setState(1969);
11773 				match(AUTHORIZATION);
11774 				setState(1970);
11775 				match(STRING_);
11776 				}
11777 			}
11778 
11779 			setState(1973);
11780 			match(ON);
11781 			setState(1974);
11782 			match(QUEUE);
11783 			setState(1975);
11784 			queueName();
11785 			setState(1977);
11786 			_errHandler.sync(this);
11787 			_la = _input.LA(1);
11788 			if (_la==LP_) {
11789 				{
11790 				setState(1976);
11791 				createServiceClause();
11792 				}
11793 			}
11794 
11795 			}
11796 		}
11797 		catch (RecognitionException re) {
11798 			_localctx.exception = re;
11799 			_errHandler.reportError(this, re);
11800 			_errHandler.recover(this, re);
11801 		}
11802 		finally {
11803 			exitRule();
11804 		}
11805 		return _localctx;
11806 	}
11807 
11808 	public static class CreateSchemaContext extends ParserRuleContext {
11809 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11810 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
11811 		public SchemaNameClauseContext schemaNameClause() {
11812 			return getRuleContext(SchemaNameClauseContext.class,0);
11813 		}
11814 		public List<SchemaElementContext> schemaElement() {
11815 			return getRuleContexts(SchemaElementContext.class);
11816 		}
11817 		public SchemaElementContext schemaElement(int i) {
11818 			return getRuleContext(SchemaElementContext.class,i);
11819 		}
11820 		public CreateSchemaContext(ParserRuleContext parent, int invokingState) {
11821 			super(parent, invokingState);
11822 		}
11823 		@Override public int getRuleIndex() { return RULE_createSchema; }
11824 		@Override
11825 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11826 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSchema(this);
11827 			else return visitor.visitChildren(this);
11828 		}
11829 	}
11830 
11831 	public final CreateSchemaContext createSchema() throws RecognitionException {
11832 		CreateSchemaContext _localctx = new CreateSchemaContext(_ctx, getState());
11833 		enterRule(_localctx, 250, RULE_createSchema);
11834 		int _la;
11835 		try {
11836 			enterOuterAlt(_localctx, 1);
11837 			{
11838 			setState(1979);
11839 			match(CREATE);
11840 			setState(1980);
11841 			match(SCHEMA);
11842 			setState(1981);
11843 			schemaNameClause();
11844 			setState(1985);
11845 			_errHandler.sync(this);
11846 			_la = _input.LA(1);
11847 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CREATE) | (1L << GRANT) | (1L << REVOKE))) != 0) || _la==DENY) {
11848 				{
11849 				{
11850 				setState(1982);
11851 				schemaElement();
11852 				}
11853 				}
11854 				setState(1987);
11855 				_errHandler.sync(this);
11856 				_la = _input.LA(1);
11857 			}
11858 			}
11859 		}
11860 		catch (RecognitionException re) {
11861 			_localctx.exception = re;
11862 			_errHandler.reportError(this, re);
11863 			_errHandler.recover(this, re);
11864 		}
11865 		finally {
11866 			exitRule();
11867 		}
11868 		return _localctx;
11869 	}
11870 
11871 	public static class AlterTableContext extends ParserRuleContext {
11872 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11873 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
11874 		public TableNameContext tableName() {
11875 			return getRuleContext(TableNameContext.class,0);
11876 		}
11877 		public List<AlterDefinitionClauseContext> alterDefinitionClause() {
11878 			return getRuleContexts(AlterDefinitionClauseContext.class);
11879 		}
11880 		public AlterDefinitionClauseContext alterDefinitionClause(int i) {
11881 			return getRuleContext(AlterDefinitionClauseContext.class,i);
11882 		}
11883 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11884 		public TerminalNode COMMA_(int i) {
11885 			return getToken(SQLServerStatementParser.COMMA_, i);
11886 		}
11887 		public AlterTableContext(ParserRuleContext parent, int invokingState) {
11888 			super(parent, invokingState);
11889 		}
11890 		@Override public int getRuleIndex() { return RULE_alterTable; }
11891 		@Override
11892 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11893 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTable(this);
11894 			else return visitor.visitChildren(this);
11895 		}
11896 	}
11897 
11898 	public final AlterTableContext alterTable() throws RecognitionException {
11899 		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
11900 		enterRule(_localctx, 252, RULE_alterTable);
11901 		int _la;
11902 		try {
11903 			enterOuterAlt(_localctx, 1);
11904 			{
11905 			setState(1988);
11906 			match(ALTER);
11907 			setState(1989);
11908 			match(TABLE);
11909 			setState(1990);
11910 			tableName();
11911 			setState(1991);
11912 			alterDefinitionClause();
11913 			setState(1996);
11914 			_errHandler.sync(this);
11915 			_la = _input.LA(1);
11916 			while (_la==COMMA_) {
11917 				{
11918 				{
11919 				setState(1992);
11920 				match(COMMA_);
11921 				setState(1993);
11922 				alterDefinitionClause();
11923 				}
11924 				}
11925 				setState(1998);
11926 				_errHandler.sync(this);
11927 				_la = _input.LA(1);
11928 			}
11929 			}
11930 		}
11931 		catch (RecognitionException re) {
11932 			_localctx.exception = re;
11933 			_errHandler.reportError(this, re);
11934 			_errHandler.recover(this, re);
11935 		}
11936 		finally {
11937 			exitRule();
11938 		}
11939 		return _localctx;
11940 	}
11941 
11942 	public static class AlterIndexContext extends ParserRuleContext {
11943 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11944 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
11945 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11946 		public TableNameContext tableName() {
11947 			return getRuleContext(TableNameContext.class,0);
11948 		}
11949 		public AlterIndexClauseContext alterIndexClause() {
11950 			return getRuleContext(AlterIndexClauseContext.class,0);
11951 		}
11952 		public IndexNameContext indexName() {
11953 			return getRuleContext(IndexNameContext.class,0);
11954 		}
11955 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
11956 		public AlterIndexContext(ParserRuleContext parent, int invokingState) {
11957 			super(parent, invokingState);
11958 		}
11959 		@Override public int getRuleIndex() { return RULE_alterIndex; }
11960 		@Override
11961 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11962 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndex(this);
11963 			else return visitor.visitChildren(this);
11964 		}
11965 	}
11966 
11967 	public final AlterIndexContext alterIndex() throws RecognitionException {
11968 		AlterIndexContext _localctx = new AlterIndexContext(_ctx, getState());
11969 		enterRule(_localctx, 254, RULE_alterIndex);
11970 		try {
11971 			enterOuterAlt(_localctx, 1);
11972 			{
11973 			setState(1999);
11974 			match(ALTER);
11975 			setState(2000);
11976 			match(INDEX);
11977 			setState(2003);
11978 			_errHandler.sync(this);
11979 			switch (_input.LA(1)) {
11980 			case TRUNCATE:
11981 			case SCHEMA:
11982 			case COLUMNS:
11983 			case PRECISION:
11984 			case FUNCTION:
11985 			case TRIGGER:
11986 			case CAST:
11987 			case SUBSTRING:
11988 			case OFF:
11989 			case GROUP:
11990 			case LIMIT:
11991 			case OFFSET:
11992 			case SAVEPOINT:
11993 			case BOOLEAN:
11994 			case ARRAY:
11995 			case DATE:
11996 			case LOCALTIME:
11997 			case LOCALTIMESTAMP:
11998 			case QUARTER:
11999 			case WEEK:
12000 			case DAY:
12001 			case SECOND:
12002 			case MICROSECOND:
12003 			case MAX:
12004 			case MIN:
12005 			case SUM:
12006 			case COUNT:
12007 			case AVG:
12008 			case ENABLE:
12009 			case DISABLE:
12010 			case INSTANCE:
12011 			case DO:
12012 			case DEFINER:
12013 			case SQL:
12014 			case CASCADED:
12015 			case LOCAL:
12016 			case NEXT:
12017 			case NAME:
12018 			case INTEGER:
12019 			case TYPE:
12020 			case TEXT:
12021 			case VIEWS:
12022 			case READ_ONLY:
12023 			case DATABASE:
12024 			case RETURNS:
12025 			case DATEPART:
12026 			case PASSWORD:
12027 			case BINARY:
12028 			case HIDDEN_:
12029 			case MOD:
12030 			case PARTITION:
12031 			case PARTITIONS:
12032 			case TOP:
12033 			case ROW:
12034 			case ROWS:
12035 			case XOR:
12036 			case ALWAYS:
12037 			case ROLE:
12038 			case START:
12039 			case ALGORITHM:
12040 			case AUTO:
12041 			case BLOCKERS:
12042 			case CLUSTERED:
12043 			case NONCLUSTERED:
12044 			case COLUMNSTORE:
12045 			case CONTENT:
12046 			case YEARS:
12047 			case MONTHS:
12048 			case WEEKS:
12049 			case DAYS:
12050 			case MINUTES:
12051 			case DENY:
12052 			case DETERMINISTIC:
12053 			case DISTRIBUTION:
12054 			case DOCUMENT:
12055 			case DURABILITY:
12056 			case ENCRYPTED:
12057 			case FILESTREAM:
12058 			case FILETABLE:
12059 			case FILLFACTOR:
12060 			case FOLLOWING:
12061 			case HASH:
12062 			case HEAP:
12063 			case INBOUND:
12064 			case OUTBOUND:
12065 			case UNBOUNDED:
12066 			case INFINITE:
12067 			case LOGIN:
12068 			case MASKED:
12069 			case MAXDOP:
12070 			case MOVE:
12071 			case NOCHECK:
12072 			case OBJECT:
12073 			case ONLINE:
12074 			case OVER:
12075 			case PAGE:
12076 			case PAUSED:
12077 			case PERIOD:
12078 			case PERSISTED:
12079 			case PRECEDING:
12080 			case RANDOMIZED:
12081 			case RANGE:
12082 			case REBUILD:
12083 			case REPLICATE:
12084 			case REPLICATION:
12085 			case RESUMABLE:
12086 			case ROWGUIDCOL:
12087 			case SAVE:
12088 			case SELF:
12089 			case SPARSE:
12090 			case SWITCH:
12091 			case TRAN:
12092 			case TRANCOUNT:
12093 			case CONTROL:
12094 			case CONCAT:
12095 			case TAKE:
12096 			case OWNERSHIP:
12097 			case DEFINITION:
12098 			case APPLICATION:
12099 			case ASSEMBLY:
12100 			case SYMMETRIC:
12101 			case ASYMMETRIC:
12102 			case SERVER:
12103 			case RECEIVE:
12104 			case CHANGE:
12105 			case TRACE:
12106 			case TRACKING:
12107 			case RESOURCES:
12108 			case SETTINGS:
12109 			case STATE:
12110 			case AVAILABILITY:
12111 			case CREDENTIAL:
12112 			case ENDPOINT:
12113 			case EVENT:
12114 			case NOTIFICATION:
12115 			case LINKED:
12116 			case AUDIT:
12117 			case DDL:
12118 			case XML:
12119 			case IMPERSONATE:
12120 			case SECURABLES:
12121 			case AUTHENTICATE:
12122 			case EXTERNAL:
12123 			case ACCESS:
12124 			case ADMINISTER:
12125 			case BULK:
12126 			case OPERATIONS:
12127 			case UNSAFE:
12128 			case SHUTDOWN:
12129 			case SCOPED:
12130 			case CONFIGURATION:
12131 			case DATASPACE:
12132 			case SERVICE:
12133 			case CERTIFICATE:
12134 			case CONTRACT:
12135 			case ENCRYPTION:
12136 			case MASTER:
12137 			case DATA:
12138 			case SOURCE:
12139 			case FILE:
12140 			case FORMAT:
12141 			case LIBRARY:
12142 			case FULLTEXT:
12143 			case MASK:
12144 			case UNMASK:
12145 			case MESSAGE:
12146 			case REMOTE:
12147 			case BINDING:
12148 			case ROUTE:
12149 			case SECURITY:
12150 			case POLICY:
12151 			case AGGREGATE:
12152 			case QUEUE:
12153 			case RULE:
12154 			case SYNONYM:
12155 			case COLLECTION:
12156 			case SCRIPT:
12157 			case KILL:
12158 			case BACKUP:
12159 			case LOG:
12160 			case SHOWPLAN:
12161 			case SUBSCRIBE:
12162 			case QUERY:
12163 			case NOTIFICATIONS:
12164 			case CHECKPOINT:
12165 			case SEQUENCE:
12166 			case ABORT_AFTER_WAIT:
12167 			case ALLOW_PAGE_LOCKS:
12168 			case ALLOW_ROW_LOCKS:
12169 			case ALL_SPARSE_COLUMNS:
12170 			case BUCKET_COUNT:
12171 			case COLUMNSTORE_ARCHIVE:
12172 			case COLUMN_ENCRYPTION_KEY:
12173 			case COLUMN_SET:
12174 			case COMPRESSION_DELAY:
12175 			case DATABASE_DEAULT:
12176 			case DATA_COMPRESSION:
12177 			case DATA_CONSISTENCY_CHECK:
12178 			case ENCRYPTION_TYPE:
12179 			case SYSTEM_TIME:
12180 			case SYSTEM_VERSIONING:
12181 			case TEXTIMAGE_ON:
12182 			case WAIT_AT_LOW_PRIORITY:
12183 			case STATISTICS_INCREMENTAL:
12184 			case STATISTICS_NORECOMPUTE:
12185 			case ROUND_ROBIN:
12186 			case SCHEMA_AND_DATA:
12187 			case SCHEMA_ONLY:
12188 			case SORT_IN_TEMPDB:
12189 			case IGNORE_DUP_KEY:
12190 			case IMPLICIT_TRANSACTIONS:
12191 			case MAX_DURATION:
12192 			case MEMORY_OPTIMIZED:
12193 			case MIGRATION_STATE:
12194 			case PAD_INDEX:
12195 			case REMOTE_DATA_ARCHIVE:
12196 			case FILESTREAM_ON:
12197 			case FILETABLE_COLLATE_FILENAME:
12198 			case FILETABLE_DIRECTORY:
12199 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
12200 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
12201 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
12202 			case FILTER_PREDICATE:
12203 			case HISTORY_RETENTION_PERIOD:
12204 			case HISTORY_TABLE:
12205 			case LOCK_ESCALATION:
12206 			case DROP_EXISTING:
12207 			case ROW_NUMBER:
12208 			case FIRST:
12209 			case DATETIME2:
12210 			case OUTPUT:
12211 			case INSERTED:
12212 			case DELETED:
12213 			case FILENAME:
12214 			case MAXSIZE:
12215 			case FILEGROWTH:
12216 			case UNLIMITED:
12217 			case KB:
12218 			case MB:
12219 			case GB:
12220 			case TB:
12221 			case MEMORY_OPTIMIZED_DATA:
12222 			case FILEGROUP:
12223 			case NON_TRANSACTED_ACCESS:
12224 			case DB_CHAINING:
12225 			case TRUSTWORTHY:
12226 			case FORWARD_ONLY:
12227 			case KEYSET:
12228 			case FAST_FORWARD:
12229 			case SCROLL_LOCKS:
12230 			case OPTIMISTIC:
12231 			case TYPE_WARNING:
12232 			case SCHEMABINDING:
12233 			case CALLER:
12234 			case OWNER:
12235 			case SNAPSHOT:
12236 			case REPEATABLE:
12237 			case SERIALIZABLE:
12238 			case NATIVE_COMPILATION:
12239 			case VIEW_METADATA:
12240 			case INSTEAD:
12241 			case APPEND:
12242 			case INCREMENT:
12243 			case CACHE:
12244 			case MINVALUE:
12245 			case MAXVALUE:
12246 			case RESTART:
12247 			case LOB_COMPACTION:
12248 			case COMPRESS_ALL_ROW_GROUPS:
12249 			case REORGANIZE:
12250 			case RESUME:
12251 			case PAUSE:
12252 			case ABORT:
12253 			case ACCELERATED_DATABASE_RECOVERY:
12254 			case PERSISTENT_VERSION_STORE_FILEGROUP:
12255 			case IMMEDIATE:
12256 			case NO_WAIT:
12257 			case TARGET_RECOVERY_TIME:
12258 			case SECONDS:
12259 			case HONOR_BROKER_PRIORITY:
12260 			case ERROR_BROKER_CONVERSATIONS:
12261 			case NEW_BROKER:
12262 			case DISABLE_BROKER:
12263 			case ENABLE_BROKER:
12264 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
12265 			case READ_COMMITTED_SNAPSHOT:
12266 			case ALLOW_SNAPSHOT_ISOLATION:
12267 			case RECURSIVE_TRIGGERS:
12268 			case QUOTED_IDENTIFIER:
12269 			case NUMERIC_ROUNDABORT:
12270 			case CONCAT_NULL_YIELDS_NULL:
12271 			case COMPATIBILITY_LEVEL:
12272 			case ARITHABORT:
12273 			case ANSI_WARNINGS:
12274 			case ANSI_PADDING:
12275 			case ANSI_NULLS:
12276 			case ANSI_NULL_DEFAULT:
12277 			case PAGE_VERIFY:
12278 			case CHECKSUM:
12279 			case TORN_PAGE_DETECTION:
12280 			case BULK_LOGGED:
12281 			case RECOVERY:
12282 			case TOTAL_EXECUTION_CPU_TIME_MS:
12283 			case TOTAL_COMPILE_CPU_TIME_MS:
12284 			case STALE_CAPTURE_POLICY_THRESHOLD:
12285 			case EXECUTION_COUNT:
12286 			case QUERY_CAPTURE_POLICY:
12287 			case WAIT_STATS_CAPTURE_MODE:
12288 			case MAX_PLANS_PER_QUERY:
12289 			case QUERY_CAPTURE_MODE:
12290 			case SIZE_BASED_CLEANUP_MODE:
12291 			case INTERVAL_LENGTH_MINUTES:
12292 			case MAX_STORAGE_SIZE_MB:
12293 			case DATA_FLUSH_INTERVAL_SECONDS:
12294 			case CLEANUP_POLICY:
12295 			case CUSTOM:
12296 			case STALE_QUERY_THRESHOLD_DAYS:
12297 			case OPERATION_MODE:
12298 			case QUERY_STORE:
12299 			case CURSOR_DEFAULT:
12300 			case GLOBAL:
12301 			case CURSOR_CLOSE_ON_COMMIT:
12302 			case HOURS:
12303 			case CHANGE_RETENTION:
12304 			case AUTO_CLEANUP:
12305 			case CHANGE_TRACKING:
12306 			case AUTOMATIC_TUNING:
12307 			case FORCE_LAST_GOOD_PLAN:
12308 			case AUTO_UPDATE_STATISTICS_ASYNC:
12309 			case AUTO_UPDATE_STATISTICS:
12310 			case AUTO_SHRINK:
12311 			case AUTO_CREATE_STATISTICS:
12312 			case INCREMENTAL:
12313 			case AUTO_CLOSE:
12314 			case DATA_RETENTION:
12315 			case TEMPORAL_HISTORY_RETENTION:
12316 			case EDITION:
12317 			case MIXED_PAGE_ALLOCATION:
12318 			case DISABLED:
12319 			case ALLOWED:
12320 			case HADR:
12321 			case MULTI_USER:
12322 			case RESTRICTED_USER:
12323 			case SINGLE_USER:
12324 			case OFFLINE:
12325 			case EMERGENCY:
12326 			case SUSPEND:
12327 			case DATE_CORRELATION_OPTIMIZATION:
12328 			case ELASTIC_POOL:
12329 			case SERVICE_OBJECTIVE:
12330 			case DATABASE_NAME:
12331 			case ALLOW_CONNECTIONS:
12332 			case GEO:
12333 			case NAMED:
12334 			case DATEFIRST:
12335 			case BACKUP_STORAGE_REDUNDANCY:
12336 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
12337 			case SECONDARY:
12338 			case FAILOVER:
12339 			case DEFAULT_FULLTEXT_LANGUAGE:
12340 			case DEFAULT_LANGUAGE:
12341 			case INLINE:
12342 			case NESTED_TRIGGERS:
12343 			case TRANSFORM_NOISE_WORDS:
12344 			case TWO_DIGIT_YEAR_CUTOFF:
12345 			case PERSISTENT_LOG_BUFFER:
12346 			case DIRECTORY_NAME:
12347 			case DATEFORMAT:
12348 			case DELAYED_DURABILITY:
12349 			case AUTHORIZATION:
12350 			case TRANSFER:
12351 			case PROVIDER:
12352 			case SEARCH:
12353 			case MEMBER:
12354 			case IDENTIFIER_:
12355 			case DELIMITED_IDENTIFIER_:
12356 				{
12357 				setState(2001);
12358 				indexName();
12359 				}
12360 				break;
12361 			case ALL:
12362 				{
12363 				setState(2002);
12364 				match(ALL);
12365 				}
12366 				break;
12367 			default:
12368 				throw new NoViableAltException(this);
12369 			}
12370 			setState(2005);
12371 			match(ON);
12372 			setState(2006);
12373 			tableName();
12374 			setState(2007);
12375 			alterIndexClause();
12376 			}
12377 		}
12378 		catch (RecognitionException re) {
12379 			_localctx.exception = re;
12380 			_errHandler.reportError(this, re);
12381 			_errHandler.recover(this, re);
12382 		}
12383 		finally {
12384 			exitRule();
12385 		}
12386 		return _localctx;
12387 	}
12388 
12389 	public static class AlterDatabaseContext extends ParserRuleContext {
12390 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12391 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
12392 		public DatabaseNameContext databaseName() {
12393 			return getRuleContext(DatabaseNameContext.class,0);
12394 		}
12395 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
12396 		public List<AlterDatabaseClauseContext> alterDatabaseClause() {
12397 			return getRuleContexts(AlterDatabaseClauseContext.class);
12398 		}
12399 		public AlterDatabaseClauseContext alterDatabaseClause(int i) {
12400 			return getRuleContext(AlterDatabaseClauseContext.class,i);
12401 		}
12402 		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
12403 			super(parent, invokingState);
12404 		}
12405 		@Override public int getRuleIndex() { return RULE_alterDatabase; }
12406 		@Override
12407 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12408 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabase(this);
12409 			else return visitor.visitChildren(this);
12410 		}
12411 	}
12412 
12413 	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
12414 		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
12415 		enterRule(_localctx, 256, RULE_alterDatabase);
12416 		int _la;
12417 		try {
12418 			enterOuterAlt(_localctx, 1);
12419 			{
12420 			setState(2009);
12421 			match(ALTER);
12422 			setState(2010);
12423 			match(DATABASE);
12424 			setState(2013);
12425 			_errHandler.sync(this);
12426 			switch (_input.LA(1)) {
12427 			case TRUNCATE:
12428 			case SCHEMA:
12429 			case COLUMNS:
12430 			case PRECISION:
12431 			case FUNCTION:
12432 			case TRIGGER:
12433 			case CAST:
12434 			case SUBSTRING:
12435 			case OFF:
12436 			case GROUP:
12437 			case LIMIT:
12438 			case OFFSET:
12439 			case SAVEPOINT:
12440 			case BOOLEAN:
12441 			case ARRAY:
12442 			case DATE:
12443 			case LOCALTIME:
12444 			case LOCALTIMESTAMP:
12445 			case QUARTER:
12446 			case WEEK:
12447 			case DAY:
12448 			case SECOND:
12449 			case MICROSECOND:
12450 			case MAX:
12451 			case MIN:
12452 			case SUM:
12453 			case COUNT:
12454 			case AVG:
12455 			case ENABLE:
12456 			case DISABLE:
12457 			case INSTANCE:
12458 			case DO:
12459 			case DEFINER:
12460 			case SQL:
12461 			case CASCADED:
12462 			case LOCAL:
12463 			case NEXT:
12464 			case NAME:
12465 			case INTEGER:
12466 			case TYPE:
12467 			case TEXT:
12468 			case VIEWS:
12469 			case READ_ONLY:
12470 			case DATABASE:
12471 			case RETURNS:
12472 			case DATEPART:
12473 			case PASSWORD:
12474 			case BINARY:
12475 			case HIDDEN_:
12476 			case MOD:
12477 			case PARTITION:
12478 			case PARTITIONS:
12479 			case TOP:
12480 			case ROW:
12481 			case ROWS:
12482 			case XOR:
12483 			case ALWAYS:
12484 			case ROLE:
12485 			case START:
12486 			case ALGORITHM:
12487 			case AUTO:
12488 			case BLOCKERS:
12489 			case CLUSTERED:
12490 			case NONCLUSTERED:
12491 			case COLUMNSTORE:
12492 			case CONTENT:
12493 			case YEARS:
12494 			case MONTHS:
12495 			case WEEKS:
12496 			case DAYS:
12497 			case MINUTES:
12498 			case DENY:
12499 			case DETERMINISTIC:
12500 			case DISTRIBUTION:
12501 			case DOCUMENT:
12502 			case DURABILITY:
12503 			case ENCRYPTED:
12504 			case FILESTREAM:
12505 			case FILETABLE:
12506 			case FILLFACTOR:
12507 			case FOLLOWING:
12508 			case HASH:
12509 			case HEAP:
12510 			case INBOUND:
12511 			case OUTBOUND:
12512 			case UNBOUNDED:
12513 			case INFINITE:
12514 			case LOGIN:
12515 			case MASKED:
12516 			case MAXDOP:
12517 			case MOVE:
12518 			case NOCHECK:
12519 			case OBJECT:
12520 			case ONLINE:
12521 			case OVER:
12522 			case PAGE:
12523 			case PAUSED:
12524 			case PERIOD:
12525 			case PERSISTED:
12526 			case PRECEDING:
12527 			case RANDOMIZED:
12528 			case RANGE:
12529 			case REBUILD:
12530 			case REPLICATE:
12531 			case REPLICATION:
12532 			case RESUMABLE:
12533 			case ROWGUIDCOL:
12534 			case SAVE:
12535 			case SELF:
12536 			case SPARSE:
12537 			case SWITCH:
12538 			case TRAN:
12539 			case TRANCOUNT:
12540 			case CONTROL:
12541 			case CONCAT:
12542 			case TAKE:
12543 			case OWNERSHIP:
12544 			case DEFINITION:
12545 			case APPLICATION:
12546 			case ASSEMBLY:
12547 			case SYMMETRIC:
12548 			case ASYMMETRIC:
12549 			case SERVER:
12550 			case RECEIVE:
12551 			case CHANGE:
12552 			case TRACE:
12553 			case TRACKING:
12554 			case RESOURCES:
12555 			case SETTINGS:
12556 			case STATE:
12557 			case AVAILABILITY:
12558 			case CREDENTIAL:
12559 			case ENDPOINT:
12560 			case EVENT:
12561 			case NOTIFICATION:
12562 			case LINKED:
12563 			case AUDIT:
12564 			case DDL:
12565 			case XML:
12566 			case IMPERSONATE:
12567 			case SECURABLES:
12568 			case AUTHENTICATE:
12569 			case EXTERNAL:
12570 			case ACCESS:
12571 			case ADMINISTER:
12572 			case BULK:
12573 			case OPERATIONS:
12574 			case UNSAFE:
12575 			case SHUTDOWN:
12576 			case SCOPED:
12577 			case CONFIGURATION:
12578 			case DATASPACE:
12579 			case SERVICE:
12580 			case CERTIFICATE:
12581 			case CONTRACT:
12582 			case ENCRYPTION:
12583 			case MASTER:
12584 			case DATA:
12585 			case SOURCE:
12586 			case FILE:
12587 			case FORMAT:
12588 			case LIBRARY:
12589 			case FULLTEXT:
12590 			case MASK:
12591 			case UNMASK:
12592 			case MESSAGE:
12593 			case REMOTE:
12594 			case BINDING:
12595 			case ROUTE:
12596 			case SECURITY:
12597 			case POLICY:
12598 			case AGGREGATE:
12599 			case QUEUE:
12600 			case RULE:
12601 			case SYNONYM:
12602 			case COLLECTION:
12603 			case SCRIPT:
12604 			case KILL:
12605 			case BACKUP:
12606 			case LOG:
12607 			case SHOWPLAN:
12608 			case SUBSCRIBE:
12609 			case QUERY:
12610 			case NOTIFICATIONS:
12611 			case CHECKPOINT:
12612 			case SEQUENCE:
12613 			case ABORT_AFTER_WAIT:
12614 			case ALLOW_PAGE_LOCKS:
12615 			case ALLOW_ROW_LOCKS:
12616 			case ALL_SPARSE_COLUMNS:
12617 			case BUCKET_COUNT:
12618 			case COLUMNSTORE_ARCHIVE:
12619 			case COLUMN_ENCRYPTION_KEY:
12620 			case COLUMN_SET:
12621 			case COMPRESSION_DELAY:
12622 			case DATABASE_DEAULT:
12623 			case DATA_COMPRESSION:
12624 			case DATA_CONSISTENCY_CHECK:
12625 			case ENCRYPTION_TYPE:
12626 			case SYSTEM_TIME:
12627 			case SYSTEM_VERSIONING:
12628 			case TEXTIMAGE_ON:
12629 			case WAIT_AT_LOW_PRIORITY:
12630 			case STATISTICS_INCREMENTAL:
12631 			case STATISTICS_NORECOMPUTE:
12632 			case ROUND_ROBIN:
12633 			case SCHEMA_AND_DATA:
12634 			case SCHEMA_ONLY:
12635 			case SORT_IN_TEMPDB:
12636 			case IGNORE_DUP_KEY:
12637 			case IMPLICIT_TRANSACTIONS:
12638 			case MAX_DURATION:
12639 			case MEMORY_OPTIMIZED:
12640 			case MIGRATION_STATE:
12641 			case PAD_INDEX:
12642 			case REMOTE_DATA_ARCHIVE:
12643 			case FILESTREAM_ON:
12644 			case FILETABLE_COLLATE_FILENAME:
12645 			case FILETABLE_DIRECTORY:
12646 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
12647 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
12648 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
12649 			case FILTER_PREDICATE:
12650 			case HISTORY_RETENTION_PERIOD:
12651 			case HISTORY_TABLE:
12652 			case LOCK_ESCALATION:
12653 			case DROP_EXISTING:
12654 			case ROW_NUMBER:
12655 			case FIRST:
12656 			case DATETIME2:
12657 			case OUTPUT:
12658 			case INSERTED:
12659 			case DELETED:
12660 			case FILENAME:
12661 			case MAXSIZE:
12662 			case FILEGROWTH:
12663 			case UNLIMITED:
12664 			case KB:
12665 			case MB:
12666 			case GB:
12667 			case TB:
12668 			case MEMORY_OPTIMIZED_DATA:
12669 			case FILEGROUP:
12670 			case NON_TRANSACTED_ACCESS:
12671 			case DB_CHAINING:
12672 			case TRUSTWORTHY:
12673 			case FORWARD_ONLY:
12674 			case KEYSET:
12675 			case FAST_FORWARD:
12676 			case SCROLL_LOCKS:
12677 			case OPTIMISTIC:
12678 			case TYPE_WARNING:
12679 			case SCHEMABINDING:
12680 			case CALLER:
12681 			case OWNER:
12682 			case SNAPSHOT:
12683 			case REPEATABLE:
12684 			case SERIALIZABLE:
12685 			case NATIVE_COMPILATION:
12686 			case VIEW_METADATA:
12687 			case INSTEAD:
12688 			case APPEND:
12689 			case INCREMENT:
12690 			case CACHE:
12691 			case MINVALUE:
12692 			case MAXVALUE:
12693 			case RESTART:
12694 			case LOB_COMPACTION:
12695 			case COMPRESS_ALL_ROW_GROUPS:
12696 			case REORGANIZE:
12697 			case RESUME:
12698 			case PAUSE:
12699 			case ABORT:
12700 			case ACCELERATED_DATABASE_RECOVERY:
12701 			case PERSISTENT_VERSION_STORE_FILEGROUP:
12702 			case IMMEDIATE:
12703 			case NO_WAIT:
12704 			case TARGET_RECOVERY_TIME:
12705 			case SECONDS:
12706 			case HONOR_BROKER_PRIORITY:
12707 			case ERROR_BROKER_CONVERSATIONS:
12708 			case NEW_BROKER:
12709 			case DISABLE_BROKER:
12710 			case ENABLE_BROKER:
12711 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
12712 			case READ_COMMITTED_SNAPSHOT:
12713 			case ALLOW_SNAPSHOT_ISOLATION:
12714 			case RECURSIVE_TRIGGERS:
12715 			case QUOTED_IDENTIFIER:
12716 			case NUMERIC_ROUNDABORT:
12717 			case CONCAT_NULL_YIELDS_NULL:
12718 			case COMPATIBILITY_LEVEL:
12719 			case ARITHABORT:
12720 			case ANSI_WARNINGS:
12721 			case ANSI_PADDING:
12722 			case ANSI_NULLS:
12723 			case ANSI_NULL_DEFAULT:
12724 			case PAGE_VERIFY:
12725 			case CHECKSUM:
12726 			case TORN_PAGE_DETECTION:
12727 			case BULK_LOGGED:
12728 			case RECOVERY:
12729 			case TOTAL_EXECUTION_CPU_TIME_MS:
12730 			case TOTAL_COMPILE_CPU_TIME_MS:
12731 			case STALE_CAPTURE_POLICY_THRESHOLD:
12732 			case EXECUTION_COUNT:
12733 			case QUERY_CAPTURE_POLICY:
12734 			case WAIT_STATS_CAPTURE_MODE:
12735 			case MAX_PLANS_PER_QUERY:
12736 			case QUERY_CAPTURE_MODE:
12737 			case SIZE_BASED_CLEANUP_MODE:
12738 			case INTERVAL_LENGTH_MINUTES:
12739 			case MAX_STORAGE_SIZE_MB:
12740 			case DATA_FLUSH_INTERVAL_SECONDS:
12741 			case CLEANUP_POLICY:
12742 			case CUSTOM:
12743 			case STALE_QUERY_THRESHOLD_DAYS:
12744 			case OPERATION_MODE:
12745 			case QUERY_STORE:
12746 			case CURSOR_DEFAULT:
12747 			case GLOBAL:
12748 			case CURSOR_CLOSE_ON_COMMIT:
12749 			case HOURS:
12750 			case CHANGE_RETENTION:
12751 			case AUTO_CLEANUP:
12752 			case CHANGE_TRACKING:
12753 			case AUTOMATIC_TUNING:
12754 			case FORCE_LAST_GOOD_PLAN:
12755 			case AUTO_UPDATE_STATISTICS_ASYNC:
12756 			case AUTO_UPDATE_STATISTICS:
12757 			case AUTO_SHRINK:
12758 			case AUTO_CREATE_STATISTICS:
12759 			case INCREMENTAL:
12760 			case AUTO_CLOSE:
12761 			case DATA_RETENTION:
12762 			case TEMPORAL_HISTORY_RETENTION:
12763 			case EDITION:
12764 			case MIXED_PAGE_ALLOCATION:
12765 			case DISABLED:
12766 			case ALLOWED:
12767 			case HADR:
12768 			case MULTI_USER:
12769 			case RESTRICTED_USER:
12770 			case SINGLE_USER:
12771 			case OFFLINE:
12772 			case EMERGENCY:
12773 			case SUSPEND:
12774 			case DATE_CORRELATION_OPTIMIZATION:
12775 			case ELASTIC_POOL:
12776 			case SERVICE_OBJECTIVE:
12777 			case DATABASE_NAME:
12778 			case ALLOW_CONNECTIONS:
12779 			case GEO:
12780 			case NAMED:
12781 			case DATEFIRST:
12782 			case BACKUP_STORAGE_REDUNDANCY:
12783 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
12784 			case SECONDARY:
12785 			case FAILOVER:
12786 			case DEFAULT_FULLTEXT_LANGUAGE:
12787 			case DEFAULT_LANGUAGE:
12788 			case INLINE:
12789 			case NESTED_TRIGGERS:
12790 			case TRANSFORM_NOISE_WORDS:
12791 			case TWO_DIGIT_YEAR_CUTOFF:
12792 			case PERSISTENT_LOG_BUFFER:
12793 			case DIRECTORY_NAME:
12794 			case DATEFORMAT:
12795 			case DELAYED_DURABILITY:
12796 			case AUTHORIZATION:
12797 			case TRANSFER:
12798 			case PROVIDER:
12799 			case SEARCH:
12800 			case MEMBER:
12801 			case IDENTIFIER_:
12802 			case DELIMITED_IDENTIFIER_:
12803 				{
12804 				setState(2011);
12805 				databaseName();
12806 				}
12807 				break;
12808 			case CURRENT:
12809 				{
12810 				setState(2012);
12811 				match(CURRENT);
12812 				}
12813 				break;
12814 			default:
12815 				throw new NoViableAltException(this);
12816 			}
12817 			setState(2018);
12818 			_errHandler.sync(this);
12819 			_la = _input.LA(1);
12820 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << ADD) | (1L << SET))) != 0) || ((((_la - 154)) & ~0x3f) == 0 && ((1L << (_la - 154)) & ((1L << (DEFAULT - 154)) | (1L << (NAME - 154)) | (1L << (READ_ONLY - 154)) | (1L << (READONLY - 154)))) != 0) || _la==COLLATE || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (REMOVE - 540)) | (1L << (AUTOGROW_SINGLE_FILE - 540)) | (1L << (AUTOGROW_ALL_FILES - 540)) | (1L << (READWRITE - 540)) | (1L << (READ_WRITE - 540)) | (1L << (MODIFY - 540)))) != 0) || _la==FORCE_FAILOVER_ALLOW_DATA_LOSS || _la==FAILOVER) {
12821 				{
12822 				{
12823 				setState(2015);
12824 				alterDatabaseClause();
12825 				}
12826 				}
12827 				setState(2020);
12828 				_errHandler.sync(this);
12829 				_la = _input.LA(1);
12830 			}
12831 			}
12832 		}
12833 		catch (RecognitionException re) {
12834 			_localctx.exception = re;
12835 			_errHandler.reportError(this, re);
12836 			_errHandler.recover(this, re);
12837 		}
12838 		finally {
12839 			exitRule();
12840 		}
12841 		return _localctx;
12842 	}
12843 
12844 	public static class AlterProcedureContext extends ParserRuleContext {
12845 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12846 		public ProcedureNameContext procedureName() {
12847 			return getRuleContext(ProcedureNameContext.class,0);
12848 		}
12849 		public ProcParametersContext procParameters() {
12850 			return getRuleContext(ProcParametersContext.class,0);
12851 		}
12852 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
12853 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
12854 		}
12855 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
12856 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
12857 		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
12858 			super(parent, invokingState);
12859 		}
12860 		@Override public int getRuleIndex() { return RULE_alterProcedure; }
12861 		@Override
12862 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12863 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterProcedure(this);
12864 			else return visitor.visitChildren(this);
12865 		}
12866 	}
12867 
12868 	public final AlterProcedureContext alterProcedure() throws RecognitionException {
12869 		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
12870 		enterRule(_localctx, 258, RULE_alterProcedure);
12871 		int _la;
12872 		try {
12873 			enterOuterAlt(_localctx, 1);
12874 			{
12875 			setState(2021);
12876 			match(ALTER);
12877 			setState(2022);
12878 			_la = _input.LA(1);
12879 			if ( !(_la==PROCEDURE || _la==PROC) ) {
12880 			_errHandler.recoverInline(this);
12881 			}
12882 			else {
12883 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12884 				_errHandler.reportMatch(this);
12885 				consume();
12886 			}
12887 			setState(2023);
12888 			procedureName();
12889 			setState(2024);
12890 			procParameters();
12891 			setState(2025);
12892 			createOrAlterProcClause();
12893 			}
12894 		}
12895 		catch (RecognitionException re) {
12896 			_localctx.exception = re;
12897 			_errHandler.reportError(this, re);
12898 			_errHandler.recover(this, re);
12899 		}
12900 		finally {
12901 			exitRule();
12902 		}
12903 		return _localctx;
12904 	}
12905 
12906 	public static class AlterFunctionContext extends ParserRuleContext {
12907 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12908 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
12909 		public FunctionNameContext functionName() {
12910 			return getRuleContext(FunctionNameContext.class,0);
12911 		}
12912 		public FuncParametersContext funcParameters() {
12913 			return getRuleContext(FuncParametersContext.class,0);
12914 		}
12915 		public FuncReturnsContext funcReturns() {
12916 			return getRuleContext(FuncReturnsContext.class,0);
12917 		}
12918 		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
12919 			super(parent, invokingState);
12920 		}
12921 		@Override public int getRuleIndex() { return RULE_alterFunction; }
12922 		@Override
12923 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12924 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterFunction(this);
12925 			else return visitor.visitChildren(this);
12926 		}
12927 	}
12928 
12929 	public final AlterFunctionContext alterFunction() throws RecognitionException {
12930 		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
12931 		enterRule(_localctx, 260, RULE_alterFunction);
12932 		try {
12933 			enterOuterAlt(_localctx, 1);
12934 			{
12935 			setState(2027);
12936 			match(ALTER);
12937 			setState(2028);
12938 			match(FUNCTION);
12939 			setState(2029);
12940 			functionName();
12941 			setState(2030);
12942 			funcParameters();
12943 			setState(2031);
12944 			funcReturns();
12945 			}
12946 		}
12947 		catch (RecognitionException re) {
12948 			_localctx.exception = re;
12949 			_errHandler.reportError(this, re);
12950 			_errHandler.recover(this, re);
12951 		}
12952 		finally {
12953 			exitRule();
12954 		}
12955 		return _localctx;
12956 	}
12957 
12958 	public static class AlterViewContext extends ParserRuleContext {
12959 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12960 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
12961 		public ViewNameContext viewName() {
12962 			return getRuleContext(ViewNameContext.class,0);
12963 		}
12964 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
12965 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
12966 		}
12967 		public AlterViewContext(ParserRuleContext parent, int invokingState) {
12968 			super(parent, invokingState);
12969 		}
12970 		@Override public int getRuleIndex() { return RULE_alterView; }
12971 		@Override
12972 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12973 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterView(this);
12974 			else return visitor.visitChildren(this);
12975 		}
12976 	}
12977 
12978 	public final AlterViewContext alterView() throws RecognitionException {
12979 		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
12980 		enterRule(_localctx, 262, RULE_alterView);
12981 		try {
12982 			enterOuterAlt(_localctx, 1);
12983 			{
12984 			setState(2033);
12985 			match(ALTER);
12986 			setState(2034);
12987 			match(VIEW);
12988 			setState(2035);
12989 			viewName();
12990 			setState(2036);
12991 			createOrAlterViewClause();
12992 			}
12993 		}
12994 		catch (RecognitionException re) {
12995 			_localctx.exception = re;
12996 			_errHandler.reportError(this, re);
12997 			_errHandler.recover(this, re);
12998 		}
12999 		finally {
13000 			exitRule();
13001 		}
13002 		return _localctx;
13003 	}
13004 
13005 	public static class AlterTriggerContext extends ParserRuleContext {
13006 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13007 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
13008 		public TriggerNameContext triggerName() {
13009 			return getRuleContext(TriggerNameContext.class,0);
13010 		}
13011 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13012 		public TriggerTargetContext triggerTarget() {
13013 			return getRuleContext(TriggerTargetContext.class,0);
13014 		}
13015 		public CreateTriggerClauseContext createTriggerClause() {
13016 			return getRuleContext(CreateTriggerClauseContext.class,0);
13017 		}
13018 		public AlterTriggerContext(ParserRuleContext parent, int invokingState) {
13019 			super(parent, invokingState);
13020 		}
13021 		@Override public int getRuleIndex() { return RULE_alterTrigger; }
13022 		@Override
13023 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13024 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTrigger(this);
13025 			else return visitor.visitChildren(this);
13026 		}
13027 	}
13028 
13029 	public final AlterTriggerContext alterTrigger() throws RecognitionException {
13030 		AlterTriggerContext _localctx = new AlterTriggerContext(_ctx, getState());
13031 		enterRule(_localctx, 264, RULE_alterTrigger);
13032 		try {
13033 			enterOuterAlt(_localctx, 1);
13034 			{
13035 			setState(2038);
13036 			match(ALTER);
13037 			setState(2039);
13038 			match(TRIGGER);
13039 			setState(2040);
13040 			triggerName();
13041 			setState(2041);
13042 			match(ON);
13043 			setState(2042);
13044 			triggerTarget();
13045 			setState(2043);
13046 			createTriggerClause();
13047 			}
13048 		}
13049 		catch (RecognitionException re) {
13050 			_localctx.exception = re;
13051 			_errHandler.reportError(this, re);
13052 			_errHandler.recover(this, re);
13053 		}
13054 		finally {
13055 			exitRule();
13056 		}
13057 		return _localctx;
13058 	}
13059 
13060 	public static class AlterSequenceContext extends ParserRuleContext {
13061 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13062 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
13063 		public SequenceNameContext sequenceName() {
13064 			return getRuleContext(SequenceNameContext.class,0);
13065 		}
13066 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
13067 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
13068 		}
13069 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
13070 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
13071 		}
13072 		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
13073 			super(parent, invokingState);
13074 		}
13075 		@Override public int getRuleIndex() { return RULE_alterSequence; }
13076 		@Override
13077 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13078 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSequence(this);
13079 			else return visitor.visitChildren(this);
13080 		}
13081 	}
13082 
13083 	public final AlterSequenceContext alterSequence() throws RecognitionException {
13084 		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
13085 		enterRule(_localctx, 266, RULE_alterSequence);
13086 		int _la;
13087 		try {
13088 			enterOuterAlt(_localctx, 1);
13089 			{
13090 			setState(2045);
13091 			match(ALTER);
13092 			setState(2046);
13093 			match(SEQUENCE);
13094 			setState(2047);
13095 			sequenceName();
13096 			setState(2051);
13097 			_errHandler.sync(this);
13098 			_la = _input.LA(1);
13099 			while (_la==AS || _la==NO || _la==START || ((((_la - 524)) & ~0x3f) == 0 && ((1L << (_la - 524)) & ((1L << (INCREMENT - 524)) | (1L << (CYCLE - 524)) | (1L << (CACHE - 524)) | (1L << (MINVALUE - 524)) | (1L << (MAXVALUE - 524)) | (1L << (RESTART - 524)))) != 0)) {
13100 				{
13101 				{
13102 				setState(2048);
13103 				createOrAlterSequenceClause();
13104 				}
13105 				}
13106 				setState(2053);
13107 				_errHandler.sync(this);
13108 				_la = _input.LA(1);
13109 			}
13110 			}
13111 		}
13112 		catch (RecognitionException re) {
13113 			_localctx.exception = re;
13114 			_errHandler.reportError(this, re);
13115 			_errHandler.recover(this, re);
13116 		}
13117 		finally {
13118 			exitRule();
13119 		}
13120 		return _localctx;
13121 	}
13122 
13123 	public static class AlterServiceContext extends ParserRuleContext {
13124 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13125 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
13126 		public ServiceNameContext serviceName() {
13127 			return getRuleContext(ServiceNameContext.class,0);
13128 		}
13129 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13130 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
13131 		public QueueNameContext queueName() {
13132 			return getRuleContext(QueueNameContext.class,0);
13133 		}
13134 		public AlterServiceClauseContext alterServiceClause() {
13135 			return getRuleContext(AlterServiceClauseContext.class,0);
13136 		}
13137 		public AlterServiceContext(ParserRuleContext parent, int invokingState) {
13138 			super(parent, invokingState);
13139 		}
13140 		@Override public int getRuleIndex() { return RULE_alterService; }
13141 		@Override
13142 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13143 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterService(this);
13144 			else return visitor.visitChildren(this);
13145 		}
13146 	}
13147 
13148 	public final AlterServiceContext alterService() throws RecognitionException {
13149 		AlterServiceContext _localctx = new AlterServiceContext(_ctx, getState());
13150 		enterRule(_localctx, 268, RULE_alterService);
13151 		int _la;
13152 		try {
13153 			enterOuterAlt(_localctx, 1);
13154 			{
13155 			setState(2054);
13156 			match(ALTER);
13157 			setState(2055);
13158 			match(SERVICE);
13159 			setState(2056);
13160 			serviceName();
13161 			setState(2060);
13162 			_errHandler.sync(this);
13163 			_la = _input.LA(1);
13164 			if (_la==ON) {
13165 				{
13166 				setState(2057);
13167 				match(ON);
13168 				setState(2058);
13169 				match(QUEUE);
13170 				setState(2059);
13171 				queueName();
13172 				}
13173 			}
13174 
13175 			setState(2063);
13176 			_errHandler.sync(this);
13177 			_la = _input.LA(1);
13178 			if (_la==LP_) {
13179 				{
13180 				setState(2062);
13181 				alterServiceClause();
13182 				}
13183 			}
13184 
13185 			}
13186 		}
13187 		catch (RecognitionException re) {
13188 			_localctx.exception = re;
13189 			_errHandler.reportError(this, re);
13190 			_errHandler.recover(this, re);
13191 		}
13192 		finally {
13193 			exitRule();
13194 		}
13195 		return _localctx;
13196 	}
13197 
13198 	public static class AlterSchemaContext extends ParserRuleContext {
13199 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13200 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13201 		public SchemaNameContext schemaName() {
13202 			return getRuleContext(SchemaNameContext.class,0);
13203 		}
13204 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
13205 		public IgnoredIdentifierContext ignoredIdentifier() {
13206 			return getRuleContext(IgnoredIdentifierContext.class,0);
13207 		}
13208 		public Class_Context class_() {
13209 			return getRuleContext(Class_Context.class,0);
13210 		}
13211 		public AlterSchemaContext(ParserRuleContext parent, int invokingState) {
13212 			super(parent, invokingState);
13213 		}
13214 		@Override public int getRuleIndex() { return RULE_alterSchema; }
13215 		@Override
13216 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13217 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSchema(this);
13218 			else return visitor.visitChildren(this);
13219 		}
13220 	}
13221 
13222 	public final AlterSchemaContext alterSchema() throws RecognitionException {
13223 		AlterSchemaContext _localctx = new AlterSchemaContext(_ctx, getState());
13224 		enterRule(_localctx, 270, RULE_alterSchema);
13225 		try {
13226 			enterOuterAlt(_localctx, 1);
13227 			{
13228 			setState(2065);
13229 			match(ALTER);
13230 			setState(2066);
13231 			match(SCHEMA);
13232 			setState(2067);
13233 			schemaName();
13234 			setState(2068);
13235 			match(TRANSFER);
13236 			setState(2070);
13237 			_errHandler.sync(this);
13238 			switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) {
13239 			case 1:
13240 				{
13241 				setState(2069);
13242 				class_();
13243 				}
13244 				break;
13245 			}
13246 			setState(2072);
13247 			ignoredIdentifier();
13248 			}
13249 		}
13250 		catch (RecognitionException re) {
13251 			_localctx.exception = re;
13252 			_errHandler.reportError(this, re);
13253 			_errHandler.recover(this, re);
13254 		}
13255 		finally {
13256 			exitRule();
13257 		}
13258 		return _localctx;
13259 	}
13260 
13261 	public static class DropTableContext extends ParserRuleContext {
13262 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13263 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13264 		public TableNamesContext tableNames() {
13265 			return getRuleContext(TableNamesContext.class,0);
13266 		}
13267 		public IfExistsContext ifExists() {
13268 			return getRuleContext(IfExistsContext.class,0);
13269 		}
13270 		public DropTableContext(ParserRuleContext parent, int invokingState) {
13271 			super(parent, invokingState);
13272 		}
13273 		@Override public int getRuleIndex() { return RULE_dropTable; }
13274 		@Override
13275 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13276 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTable(this);
13277 			else return visitor.visitChildren(this);
13278 		}
13279 	}
13280 
13281 	public final DropTableContext dropTable() throws RecognitionException {
13282 		DropTableContext _localctx = new DropTableContext(_ctx, getState());
13283 		enterRule(_localctx, 272, RULE_dropTable);
13284 		int _la;
13285 		try {
13286 			enterOuterAlt(_localctx, 1);
13287 			{
13288 			setState(2074);
13289 			match(DROP);
13290 			setState(2075);
13291 			match(TABLE);
13292 			setState(2077);
13293 			_errHandler.sync(this);
13294 			_la = _input.LA(1);
13295 			if (_la==IF) {
13296 				{
13297 				setState(2076);
13298 				ifExists();
13299 				}
13300 			}
13301 
13302 			setState(2079);
13303 			tableNames();
13304 			}
13305 		}
13306 		catch (RecognitionException re) {
13307 			_localctx.exception = re;
13308 			_errHandler.reportError(this, re);
13309 			_errHandler.recover(this, re);
13310 		}
13311 		finally {
13312 			exitRule();
13313 		}
13314 		return _localctx;
13315 	}
13316 
13317 	public static class DropIndexContext extends ParserRuleContext {
13318 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13319 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
13320 		public IndexNameContext indexName() {
13321 			return getRuleContext(IndexNameContext.class,0);
13322 		}
13323 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13324 		public TableNameContext tableName() {
13325 			return getRuleContext(TableNameContext.class,0);
13326 		}
13327 		public IfExistsContext ifExists() {
13328 			return getRuleContext(IfExistsContext.class,0);
13329 		}
13330 		public DropIndexContext(ParserRuleContext parent, int invokingState) {
13331 			super(parent, invokingState);
13332 		}
13333 		@Override public int getRuleIndex() { return RULE_dropIndex; }
13334 		@Override
13335 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13336 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndex(this);
13337 			else return visitor.visitChildren(this);
13338 		}
13339 	}
13340 
13341 	public final DropIndexContext dropIndex() throws RecognitionException {
13342 		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
13343 		enterRule(_localctx, 274, RULE_dropIndex);
13344 		int _la;
13345 		try {
13346 			enterOuterAlt(_localctx, 1);
13347 			{
13348 			setState(2081);
13349 			match(DROP);
13350 			setState(2082);
13351 			match(INDEX);
13352 			setState(2084);
13353 			_errHandler.sync(this);
13354 			_la = _input.LA(1);
13355 			if (_la==IF) {
13356 				{
13357 				setState(2083);
13358 				ifExists();
13359 				}
13360 			}
13361 
13362 			setState(2086);
13363 			indexName();
13364 			setState(2087);
13365 			match(ON);
13366 			setState(2088);
13367 			tableName();
13368 			}
13369 		}
13370 		catch (RecognitionException re) {
13371 			_localctx.exception = re;
13372 			_errHandler.reportError(this, re);
13373 			_errHandler.recover(this, re);
13374 		}
13375 		finally {
13376 			exitRule();
13377 		}
13378 		return _localctx;
13379 	}
13380 
13381 	public static class DropDatabaseContext extends ParserRuleContext {
13382 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13383 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13384 		public List<DatabaseNameContext> databaseName() {
13385 			return getRuleContexts(DatabaseNameContext.class);
13386 		}
13387 		public DatabaseNameContext databaseName(int i) {
13388 			return getRuleContext(DatabaseNameContext.class,i);
13389 		}
13390 		public IfExistsContext ifExists() {
13391 			return getRuleContext(IfExistsContext.class,0);
13392 		}
13393 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13394 		public TerminalNode COMMA_(int i) {
13395 			return getToken(SQLServerStatementParser.COMMA_, i);
13396 		}
13397 		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
13398 			super(parent, invokingState);
13399 		}
13400 		@Override public int getRuleIndex() { return RULE_dropDatabase; }
13401 		@Override
13402 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13403 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropDatabase(this);
13404 			else return visitor.visitChildren(this);
13405 		}
13406 	}
13407 
13408 	public final DropDatabaseContext dropDatabase() throws RecognitionException {
13409 		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
13410 		enterRule(_localctx, 276, RULE_dropDatabase);
13411 		int _la;
13412 		try {
13413 			enterOuterAlt(_localctx, 1);
13414 			{
13415 			setState(2090);
13416 			match(DROP);
13417 			setState(2091);
13418 			match(DATABASE);
13419 			setState(2093);
13420 			_errHandler.sync(this);
13421 			_la = _input.LA(1);
13422 			if (_la==IF) {
13423 				{
13424 				setState(2092);
13425 				ifExists();
13426 				}
13427 			}
13428 
13429 			setState(2095);
13430 			databaseName();
13431 			setState(2100);
13432 			_errHandler.sync(this);
13433 			_la = _input.LA(1);
13434 			while (_la==COMMA_) {
13435 				{
13436 				{
13437 				setState(2096);
13438 				match(COMMA_);
13439 				setState(2097);
13440 				databaseName();
13441 				}
13442 				}
13443 				setState(2102);
13444 				_errHandler.sync(this);
13445 				_la = _input.LA(1);
13446 			}
13447 			}
13448 		}
13449 		catch (RecognitionException re) {
13450 			_localctx.exception = re;
13451 			_errHandler.reportError(this, re);
13452 			_errHandler.recover(this, re);
13453 		}
13454 		finally {
13455 			exitRule();
13456 		}
13457 		return _localctx;
13458 	}
13459 
13460 	public static class DropFunctionContext extends ParserRuleContext {
13461 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13462 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
13463 		public List<FunctionNameContext> functionName() {
13464 			return getRuleContexts(FunctionNameContext.class);
13465 		}
13466 		public FunctionNameContext functionName(int i) {
13467 			return getRuleContext(FunctionNameContext.class,i);
13468 		}
13469 		public IfExistsContext ifExists() {
13470 			return getRuleContext(IfExistsContext.class,0);
13471 		}
13472 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13473 		public TerminalNode COMMA_(int i) {
13474 			return getToken(SQLServerStatementParser.COMMA_, i);
13475 		}
13476 		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
13477 			super(parent, invokingState);
13478 		}
13479 		@Override public int getRuleIndex() { return RULE_dropFunction; }
13480 		@Override
13481 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13482 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropFunction(this);
13483 			else return visitor.visitChildren(this);
13484 		}
13485 	}
13486 
13487 	public final DropFunctionContext dropFunction() throws RecognitionException {
13488 		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
13489 		enterRule(_localctx, 278, RULE_dropFunction);
13490 		int _la;
13491 		try {
13492 			enterOuterAlt(_localctx, 1);
13493 			{
13494 			setState(2103);
13495 			match(DROP);
13496 			setState(2104);
13497 			match(FUNCTION);
13498 			setState(2106);
13499 			_errHandler.sync(this);
13500 			_la = _input.LA(1);
13501 			if (_la==IF) {
13502 				{
13503 				setState(2105);
13504 				ifExists();
13505 				}
13506 			}
13507 
13508 			setState(2108);
13509 			functionName();
13510 			setState(2113);
13511 			_errHandler.sync(this);
13512 			_la = _input.LA(1);
13513 			while (_la==COMMA_) {
13514 				{
13515 				{
13516 				setState(2109);
13517 				match(COMMA_);
13518 				setState(2110);
13519 				functionName();
13520 				}
13521 				}
13522 				setState(2115);
13523 				_errHandler.sync(this);
13524 				_la = _input.LA(1);
13525 			}
13526 			}
13527 		}
13528 		catch (RecognitionException re) {
13529 			_localctx.exception = re;
13530 			_errHandler.reportError(this, re);
13531 			_errHandler.recover(this, re);
13532 		}
13533 		finally {
13534 			exitRule();
13535 		}
13536 		return _localctx;
13537 	}
13538 
13539 	public static class DropProcedureContext extends ParserRuleContext {
13540 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13541 		public List<ProcedureNameContext> procedureName() {
13542 			return getRuleContexts(ProcedureNameContext.class);
13543 		}
13544 		public ProcedureNameContext procedureName(int i) {
13545 			return getRuleContext(ProcedureNameContext.class,i);
13546 		}
13547 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
13548 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
13549 		public IfExistsContext ifExists() {
13550 			return getRuleContext(IfExistsContext.class,0);
13551 		}
13552 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13553 		public TerminalNode COMMA_(int i) {
13554 			return getToken(SQLServerStatementParser.COMMA_, i);
13555 		}
13556 		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
13557 			super(parent, invokingState);
13558 		}
13559 		@Override public int getRuleIndex() { return RULE_dropProcedure; }
13560 		@Override
13561 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13562 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropProcedure(this);
13563 			else return visitor.visitChildren(this);
13564 		}
13565 	}
13566 
13567 	public final DropProcedureContext dropProcedure() throws RecognitionException {
13568 		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
13569 		enterRule(_localctx, 280, RULE_dropProcedure);
13570 		int _la;
13571 		try {
13572 			enterOuterAlt(_localctx, 1);
13573 			{
13574 			setState(2116);
13575 			match(DROP);
13576 			setState(2117);
13577 			_la = _input.LA(1);
13578 			if ( !(_la==PROCEDURE || _la==PROC) ) {
13579 			_errHandler.recoverInline(this);
13580 			}
13581 			else {
13582 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
13583 				_errHandler.reportMatch(this);
13584 				consume();
13585 			}
13586 			setState(2119);
13587 			_errHandler.sync(this);
13588 			_la = _input.LA(1);
13589 			if (_la==IF) {
13590 				{
13591 				setState(2118);
13592 				ifExists();
13593 				}
13594 			}
13595 
13596 			setState(2121);
13597 			procedureName();
13598 			setState(2126);
13599 			_errHandler.sync(this);
13600 			_la = _input.LA(1);
13601 			while (_la==COMMA_) {
13602 				{
13603 				{
13604 				setState(2122);
13605 				match(COMMA_);
13606 				setState(2123);
13607 				procedureName();
13608 				}
13609 				}
13610 				setState(2128);
13611 				_errHandler.sync(this);
13612 				_la = _input.LA(1);
13613 			}
13614 			}
13615 		}
13616 		catch (RecognitionException re) {
13617 			_localctx.exception = re;
13618 			_errHandler.reportError(this, re);
13619 			_errHandler.recover(this, re);
13620 		}
13621 		finally {
13622 			exitRule();
13623 		}
13624 		return _localctx;
13625 	}
13626 
13627 	public static class DropViewContext extends ParserRuleContext {
13628 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13629 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
13630 		public List<ViewNameContext> viewName() {
13631 			return getRuleContexts(ViewNameContext.class);
13632 		}
13633 		public ViewNameContext viewName(int i) {
13634 			return getRuleContext(ViewNameContext.class,i);
13635 		}
13636 		public IfExistsContext ifExists() {
13637 			return getRuleContext(IfExistsContext.class,0);
13638 		}
13639 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13640 		public TerminalNode COMMA_(int i) {
13641 			return getToken(SQLServerStatementParser.COMMA_, i);
13642 		}
13643 		public DropViewContext(ParserRuleContext parent, int invokingState) {
13644 			super(parent, invokingState);
13645 		}
13646 		@Override public int getRuleIndex() { return RULE_dropView; }
13647 		@Override
13648 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13649 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropView(this);
13650 			else return visitor.visitChildren(this);
13651 		}
13652 	}
13653 
13654 	public final DropViewContext dropView() throws RecognitionException {
13655 		DropViewContext _localctx = new DropViewContext(_ctx, getState());
13656 		enterRule(_localctx, 282, RULE_dropView);
13657 		int _la;
13658 		try {
13659 			enterOuterAlt(_localctx, 1);
13660 			{
13661 			setState(2129);
13662 			match(DROP);
13663 			setState(2130);
13664 			match(VIEW);
13665 			setState(2132);
13666 			_errHandler.sync(this);
13667 			_la = _input.LA(1);
13668 			if (_la==IF) {
13669 				{
13670 				setState(2131);
13671 				ifExists();
13672 				}
13673 			}
13674 
13675 			setState(2134);
13676 			viewName();
13677 			setState(2139);
13678 			_errHandler.sync(this);
13679 			_la = _input.LA(1);
13680 			while (_la==COMMA_) {
13681 				{
13682 				{
13683 				setState(2135);
13684 				match(COMMA_);
13685 				setState(2136);
13686 				viewName();
13687 				}
13688 				}
13689 				setState(2141);
13690 				_errHandler.sync(this);
13691 				_la = _input.LA(1);
13692 			}
13693 			}
13694 		}
13695 		catch (RecognitionException re) {
13696 			_localctx.exception = re;
13697 			_errHandler.reportError(this, re);
13698 			_errHandler.recover(this, re);
13699 		}
13700 		finally {
13701 			exitRule();
13702 		}
13703 		return _localctx;
13704 	}
13705 
13706 	public static class DropTriggerContext extends ParserRuleContext {
13707 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13708 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
13709 		public List<TriggerNameContext> triggerName() {
13710 			return getRuleContexts(TriggerNameContext.class);
13711 		}
13712 		public TriggerNameContext triggerName(int i) {
13713 			return getRuleContext(TriggerNameContext.class,i);
13714 		}
13715 		public IfExistsContext ifExists() {
13716 			return getRuleContext(IfExistsContext.class,0);
13717 		}
13718 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13719 		public TerminalNode COMMA_(int i) {
13720 			return getToken(SQLServerStatementParser.COMMA_, i);
13721 		}
13722 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13723 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13724 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
13725 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
13726 		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
13727 			super(parent, invokingState);
13728 		}
13729 		@Override public int getRuleIndex() { return RULE_dropTrigger; }
13730 		@Override
13731 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13732 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTrigger(this);
13733 			else return visitor.visitChildren(this);
13734 		}
13735 	}
13736 
13737 	public final DropTriggerContext dropTrigger() throws RecognitionException {
13738 		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
13739 		enterRule(_localctx, 284, RULE_dropTrigger);
13740 		int _la;
13741 		try {
13742 			enterOuterAlt(_localctx, 1);
13743 			{
13744 			setState(2142);
13745 			match(DROP);
13746 			setState(2143);
13747 			match(TRIGGER);
13748 			setState(2145);
13749 			_errHandler.sync(this);
13750 			_la = _input.LA(1);
13751 			if (_la==IF) {
13752 				{
13753 				setState(2144);
13754 				ifExists();
13755 				}
13756 			}
13757 
13758 			setState(2147);
13759 			triggerName();
13760 			setState(2152);
13761 			_errHandler.sync(this);
13762 			_la = _input.LA(1);
13763 			while (_la==COMMA_) {
13764 				{
13765 				{
13766 				setState(2148);
13767 				match(COMMA_);
13768 				setState(2149);
13769 				triggerName();
13770 				}
13771 				}
13772 				setState(2154);
13773 				_errHandler.sync(this);
13774 				_la = _input.LA(1);
13775 			}
13776 			setState(2161);
13777 			_errHandler.sync(this);
13778 			_la = _input.LA(1);
13779 			if (_la==ON) {
13780 				{
13781 				setState(2155);
13782 				match(ON);
13783 				setState(2159);
13784 				_errHandler.sync(this);
13785 				switch (_input.LA(1)) {
13786 				case DATABASE:
13787 					{
13788 					setState(2156);
13789 					match(DATABASE);
13790 					}
13791 					break;
13792 				case ALL:
13793 					{
13794 					setState(2157);
13795 					match(ALL);
13796 					setState(2158);
13797 					match(SERVER);
13798 					}
13799 					break;
13800 				default:
13801 					throw new NoViableAltException(this);
13802 				}
13803 				}
13804 			}
13805 
13806 			}
13807 		}
13808 		catch (RecognitionException re) {
13809 			_localctx.exception = re;
13810 			_errHandler.reportError(this, re);
13811 			_errHandler.recover(this, re);
13812 		}
13813 		finally {
13814 			exitRule();
13815 		}
13816 		return _localctx;
13817 	}
13818 
13819 	public static class DropSequenceContext extends ParserRuleContext {
13820 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13821 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
13822 		public List<SequenceNameContext> sequenceName() {
13823 			return getRuleContexts(SequenceNameContext.class);
13824 		}
13825 		public SequenceNameContext sequenceName(int i) {
13826 			return getRuleContext(SequenceNameContext.class,i);
13827 		}
13828 		public IfExistsContext ifExists() {
13829 			return getRuleContext(IfExistsContext.class,0);
13830 		}
13831 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13832 		public TerminalNode COMMA_(int i) {
13833 			return getToken(SQLServerStatementParser.COMMA_, i);
13834 		}
13835 		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
13836 			super(parent, invokingState);
13837 		}
13838 		@Override public int getRuleIndex() { return RULE_dropSequence; }
13839 		@Override
13840 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13841 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSequence(this);
13842 			else return visitor.visitChildren(this);
13843 		}
13844 	}
13845 
13846 	public final DropSequenceContext dropSequence() throws RecognitionException {
13847 		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
13848 		enterRule(_localctx, 286, RULE_dropSequence);
13849 		int _la;
13850 		try {
13851 			enterOuterAlt(_localctx, 1);
13852 			{
13853 			setState(2163);
13854 			match(DROP);
13855 			setState(2164);
13856 			match(SEQUENCE);
13857 			setState(2166);
13858 			_errHandler.sync(this);
13859 			_la = _input.LA(1);
13860 			if (_la==IF) {
13861 				{
13862 				setState(2165);
13863 				ifExists();
13864 				}
13865 			}
13866 
13867 			setState(2168);
13868 			sequenceName();
13869 			setState(2173);
13870 			_errHandler.sync(this);
13871 			_la = _input.LA(1);
13872 			while (_la==COMMA_) {
13873 				{
13874 				{
13875 				setState(2169);
13876 				match(COMMA_);
13877 				setState(2170);
13878 				sequenceName();
13879 				}
13880 				}
13881 				setState(2175);
13882 				_errHandler.sync(this);
13883 				_la = _input.LA(1);
13884 			}
13885 			}
13886 		}
13887 		catch (RecognitionException re) {
13888 			_localctx.exception = re;
13889 			_errHandler.reportError(this, re);
13890 			_errHandler.recover(this, re);
13891 		}
13892 		finally {
13893 			exitRule();
13894 		}
13895 		return _localctx;
13896 	}
13897 
13898 	public static class DropServiceContext extends ParserRuleContext {
13899 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13900 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
13901 		public ServiceNameContext serviceName() {
13902 			return getRuleContext(ServiceNameContext.class,0);
13903 		}
13904 		public DropServiceContext(ParserRuleContext parent, int invokingState) {
13905 			super(parent, invokingState);
13906 		}
13907 		@Override public int getRuleIndex() { return RULE_dropService; }
13908 		@Override
13909 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13910 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropService(this);
13911 			else return visitor.visitChildren(this);
13912 		}
13913 	}
13914 
13915 	public final DropServiceContext dropService() throws RecognitionException {
13916 		DropServiceContext _localctx = new DropServiceContext(_ctx, getState());
13917 		enterRule(_localctx, 288, RULE_dropService);
13918 		try {
13919 			enterOuterAlt(_localctx, 1);
13920 			{
13921 			setState(2176);
13922 			match(DROP);
13923 			setState(2177);
13924 			match(SERVICE);
13925 			setState(2178);
13926 			serviceName();
13927 			}
13928 		}
13929 		catch (RecognitionException re) {
13930 			_localctx.exception = re;
13931 			_errHandler.reportError(this, re);
13932 			_errHandler.recover(this, re);
13933 		}
13934 		finally {
13935 			exitRule();
13936 		}
13937 		return _localctx;
13938 	}
13939 
13940 	public static class DropSchemaContext extends ParserRuleContext {
13941 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13942 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13943 		public SchemaNameContext schemaName() {
13944 			return getRuleContext(SchemaNameContext.class,0);
13945 		}
13946 		public IfExistsContext ifExists() {
13947 			return getRuleContext(IfExistsContext.class,0);
13948 		}
13949 		public DropSchemaContext(ParserRuleContext parent, int invokingState) {
13950 			super(parent, invokingState);
13951 		}
13952 		@Override public int getRuleIndex() { return RULE_dropSchema; }
13953 		@Override
13954 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13955 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSchema(this);
13956 			else return visitor.visitChildren(this);
13957 		}
13958 	}
13959 
13960 	public final DropSchemaContext dropSchema() throws RecognitionException {
13961 		DropSchemaContext _localctx = new DropSchemaContext(_ctx, getState());
13962 		enterRule(_localctx, 290, RULE_dropSchema);
13963 		int _la;
13964 		try {
13965 			enterOuterAlt(_localctx, 1);
13966 			{
13967 			setState(2180);
13968 			match(DROP);
13969 			setState(2181);
13970 			match(SCHEMA);
13971 			setState(2183);
13972 			_errHandler.sync(this);
13973 			_la = _input.LA(1);
13974 			if (_la==IF) {
13975 				{
13976 				setState(2182);
13977 				ifExists();
13978 				}
13979 			}
13980 
13981 			setState(2185);
13982 			schemaName();
13983 			}
13984 		}
13985 		catch (RecognitionException re) {
13986 			_localctx.exception = re;
13987 			_errHandler.reportError(this, re);
13988 			_errHandler.recover(this, re);
13989 		}
13990 		finally {
13991 			exitRule();
13992 		}
13993 		return _localctx;
13994 	}
13995 
13996 	public static class TruncateTableContext extends ParserRuleContext {
13997 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
13998 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13999 		public TableNameContext tableName() {
14000 			return getRuleContext(TableNameContext.class,0);
14001 		}
14002 		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
14003 			super(parent, invokingState);
14004 		}
14005 		@Override public int getRuleIndex() { return RULE_truncateTable; }
14006 		@Override
14007 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14008 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTruncateTable(this);
14009 			else return visitor.visitChildren(this);
14010 		}
14011 	}
14012 
14013 	public final TruncateTableContext truncateTable() throws RecognitionException {
14014 		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
14015 		enterRule(_localctx, 292, RULE_truncateTable);
14016 		try {
14017 			enterOuterAlt(_localctx, 1);
14018 			{
14019 			setState(2187);
14020 			match(TRUNCATE);
14021 			setState(2188);
14022 			match(TABLE);
14023 			setState(2189);
14024 			tableName();
14025 			}
14026 		}
14027 		catch (RecognitionException re) {
14028 			_localctx.exception = re;
14029 			_errHandler.reportError(this, re);
14030 			_errHandler.recover(this, re);
14031 		}
14032 		finally {
14033 			exitRule();
14034 		}
14035 		return _localctx;
14036 	}
14037 
14038 	public static class UpdateStatisticsContext extends ParserRuleContext {
14039 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
14040 		public TerminalNode STATISTICS() { return getToken(SQLServerStatementParser.STATISTICS, 0); }
14041 		public TableNameContext tableName() {
14042 			return getRuleContext(TableNameContext.class,0);
14043 		}
14044 		public List<IndexNameContext> indexName() {
14045 			return getRuleContexts(IndexNameContext.class);
14046 		}
14047 		public IndexNameContext indexName(int i) {
14048 			return getRuleContext(IndexNameContext.class,i);
14049 		}
14050 		public StatisticsWithClauseContext statisticsWithClause() {
14051 			return getRuleContext(StatisticsWithClauseContext.class,0);
14052 		}
14053 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14054 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14055 		public TerminalNode COMMA_(int i) {
14056 			return getToken(SQLServerStatementParser.COMMA_, i);
14057 		}
14058 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14059 		public UpdateStatisticsContext(ParserRuleContext parent, int invokingState) {
14060 			super(parent, invokingState);
14061 		}
14062 		@Override public int getRuleIndex() { return RULE_updateStatistics; }
14063 		@Override
14064 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14065 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdateStatistics(this);
14066 			else return visitor.visitChildren(this);
14067 		}
14068 	}
14069 
14070 	public final UpdateStatisticsContext updateStatistics() throws RecognitionException {
14071 		UpdateStatisticsContext _localctx = new UpdateStatisticsContext(_ctx, getState());
14072 		enterRule(_localctx, 294, RULE_updateStatistics);
14073 		int _la;
14074 		try {
14075 			enterOuterAlt(_localctx, 1);
14076 			{
14077 			setState(2191);
14078 			match(UPDATE);
14079 			setState(2192);
14080 			match(STATISTICS);
14081 			setState(2193);
14082 			tableName();
14083 			setState(2208);
14084 			_errHandler.sync(this);
14085 			_la = _input.LA(1);
14086 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CAST - 69)) | (1L << (SUBSTRING - 69)) | (1L << (OFF - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (DATE - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)) | (1L << (AUTO - 203)) | (1L << (BLOCKERS - 203)) | (1L << (CLUSTERED - 203)) | (1L << (NONCLUSTERED - 203)) | (1L << (COLUMNSTORE - 203)) | (1L << (CONTENT - 203)) | (1L << (YEARS - 203)) | (1L << (MONTHS - 203)) | (1L << (WEEKS - 203)) | (1L << (DAYS - 203)) | (1L << (MINUTES - 203)) | (1L << (DENY - 203)) | (1L << (DETERMINISTIC - 203)) | (1L << (DISTRIBUTION - 203)) | (1L << (DOCUMENT - 203)) | (1L << (DURABILITY - 203)) | (1L << (ENCRYPTED - 203)) | (1L << (FILESTREAM - 203)) | (1L << (FILETABLE - 203)) | (1L << (FILLFACTOR - 203)) | (1L << (FOLLOWING - 203)) | (1L << (HASH - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)) | (1L << (CONTROL - 267)) | (1L << (CONCAT - 267)) | (1L << (TAKE - 267)) | (1L << (OWNERSHIP - 267)) | (1L << (DEFINITION - 267)) | (1L << (APPLICATION - 267)) | (1L << (ASSEMBLY - 267)) | (1L << (SYMMETRIC - 267)) | (1L << (ASYMMETRIC - 267)) | (1L << (SERVER - 267)) | (1L << (RECEIVE - 267)) | (1L << (CHANGE - 267)) | (1L << (TRACE - 267)) | (1L << (TRACKING - 267)) | (1L << (RESOURCES - 267)) | (1L << (SETTINGS - 267)) | (1L << (STATE - 267)) | (1L << (AVAILABILITY - 267)) | (1L << (CREDENTIAL - 267)) | (1L << (ENDPOINT - 267)) | (1L << (EVENT - 267)) | (1L << (NOTIFICATION - 267)) | (1L << (LINKED - 267)) | (1L << (AUDIT - 267)))) != 0) || ((((_la - 331)) & ~0x3f) == 0 && ((1L << (_la - 331)) & ((1L << (DDL - 331)) | (1L << (XML - 331)) | (1L << (IMPERSONATE - 331)) | (1L << (SECURABLES - 331)) | (1L << (AUTHENTICATE - 331)) | (1L << (EXTERNAL - 331)) | (1L << (ACCESS - 331)) | (1L << (ADMINISTER - 331)) | (1L << (BULK - 331)) | (1L << (OPERATIONS - 331)) | (1L << (UNSAFE - 331)) | (1L << (SHUTDOWN - 331)) | (1L << (SCOPED - 331)) | (1L << (CONFIGURATION - 331)) | (1L << (DATASPACE - 331)) | (1L << (SERVICE - 331)) | (1L << (CERTIFICATE - 331)) | (1L << (CONTRACT - 331)) | (1L << (ENCRYPTION - 331)) | (1L << (MASTER - 331)) | (1L << (DATA - 331)) | (1L << (SOURCE - 331)) | (1L << (FILE - 331)) | (1L << (FORMAT - 331)) | (1L << (LIBRARY - 331)) | (1L << (FULLTEXT - 331)) | (1L << (MASK - 331)) | (1L << (UNMASK - 331)) | (1L << (MESSAGE - 331)) | (1L << (REMOTE - 331)) | (1L << (BINDING - 331)) | (1L << (ROUTE - 331)) | (1L << (SECURITY - 331)) | (1L << (POLICY - 331)) | (1L << (AGGREGATE - 331)) | (1L << (QUEUE - 331)) | (1L << (RULE - 331)) | (1L << (SYNONYM - 331)) | (1L << (COLLECTION - 331)) | (1L << (SCRIPT - 331)) | (1L << (KILL - 331)) | (1L << (BACKUP - 331)) | (1L << (LOG - 331)) | (1L << (SHOWPLAN - 331)) | (1L << (SUBSCRIBE - 331)) | (1L << (QUERY - 331)) | (1L << (NOTIFICATIONS - 331)) | (1L << (CHECKPOINT - 331)) | (1L << (SEQUENCE - 331)) | (1L << (ABORT_AFTER_WAIT - 331)) | (1L << (ALLOW_PAGE_LOCKS - 331)) | (1L << (ALLOW_ROW_LOCKS - 331)) | (1L << (ALL_SPARSE_COLUMNS - 331)) | (1L << (BUCKET_COUNT - 331)) | (1L << (COLUMNSTORE_ARCHIVE - 331)) | (1L << (COLUMN_ENCRYPTION_KEY - 331)) | (1L << (COLUMN_SET - 331)) | (1L << (COMPRESSION_DELAY - 331)) | (1L << (DATABASE_DEAULT - 331)) | (1L << (DATA_COMPRESSION - 331)) | (1L << (DATA_CONSISTENCY_CHECK - 331)) | (1L << (ENCRYPTION_TYPE - 331)) | (1L << (SYSTEM_TIME - 331)) | (1L << (SYSTEM_VERSIONING - 331)))) != 0) || ((((_la - 395)) & ~0x3f) == 0 && ((1L << (_la - 395)) & ((1L << (TEXTIMAGE_ON - 395)) | (1L << (WAIT_AT_LOW_PRIORITY - 395)) | (1L << (STATISTICS_INCREMENTAL - 395)) | (1L << (STATISTICS_NORECOMPUTE - 395)) | (1L << (ROUND_ROBIN - 395)) | (1L << (SCHEMA_AND_DATA - 395)) | (1L << (SCHEMA_ONLY - 395)) | (1L << (SORT_IN_TEMPDB - 395)) | (1L << (IGNORE_DUP_KEY - 395)) | (1L << (IMPLICIT_TRANSACTIONS - 395)) | (1L << (MAX_DURATION - 395)) | (1L << (MEMORY_OPTIMIZED - 395)) | (1L << (MIGRATION_STATE - 395)) | (1L << (PAD_INDEX - 395)) | (1L << (REMOTE_DATA_ARCHIVE - 395)) | (1L << (FILESTREAM_ON - 395)) | (1L << (FILETABLE_COLLATE_FILENAME - 395)) | (1L << (FILETABLE_DIRECTORY - 395)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 395)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 395)) | (1L << (FILTER_PREDICATE - 395)) | (1L << (HISTORY_RETENTION_PERIOD - 395)) | (1L << (HISTORY_TABLE - 395)) | (1L << (LOCK_ESCALATION - 395)) | (1L << (DROP_EXISTING - 395)) | (1L << (ROW_NUMBER - 395)) | (1L << (FIRST - 395)) | (1L << (DATETIME2 - 395)) | (1L << (OUTPUT - 395)) | (1L << (INSERTED - 395)) | (1L << (DELETED - 395)))) != 0) || ((((_la - 480)) & ~0x3f) == 0 && ((1L << (_la - 480)) & ((1L << (FILENAME - 480)) | (1L << (MAXSIZE - 480)) | (1L << (FILEGROWTH - 480)) | (1L << (UNLIMITED - 480)) | (1L << (KB - 480)) | (1L << (MB - 480)) | (1L << (GB - 480)) | (1L << (TB - 480)) | (1L << (MEMORY_OPTIMIZED_DATA - 480)) | (1L << (FILEGROUP - 480)) | (1L << (NON_TRANSACTED_ACCESS - 480)) | (1L << (DB_CHAINING - 480)) | (1L << (TRUSTWORTHY - 480)) | (1L << (FORWARD_ONLY - 480)) | (1L << (KEYSET - 480)) | (1L << (FAST_FORWARD - 480)) | (1L << (SCROLL_LOCKS - 480)) | (1L << (OPTIMISTIC - 480)) | (1L << (TYPE_WARNING - 480)) | (1L << (SCHEMABINDING - 480)) | (1L << (CALLER - 480)) | (1L << (OWNER - 480)) | (1L << (SNAPSHOT - 480)) | (1L << (REPEATABLE - 480)) | (1L << (SERIALIZABLE - 480)) | (1L << (NATIVE_COMPILATION - 480)) | (1L << (VIEW_METADATA - 480)) | (1L << (INSTEAD - 480)) | (1L << (APPEND - 480)) | (1L << (INCREMENT - 480)) | (1L << (CACHE - 480)) | (1L << (MINVALUE - 480)) | (1L << (MAXVALUE - 480)) | (1L << (RESTART - 480)) | (1L << (LOB_COMPACTION - 480)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 480)) | (1L << (REORGANIZE - 480)) | (1L << (RESUME - 480)) | (1L << (PAUSE - 480)) | (1L << (ABORT - 480)))) != 0) || ((((_la - 546)) & ~0x3f) == 0 && ((1L << (_la - 546)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 546)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 546)) | (1L << (IMMEDIATE - 546)) | (1L << (NO_WAIT - 546)) | (1L << (TARGET_RECOVERY_TIME - 546)) | (1L << (SECONDS - 546)) | (1L << (HONOR_BROKER_PRIORITY - 546)) | (1L << (ERROR_BROKER_CONVERSATIONS - 546)) | (1L << (NEW_BROKER - 546)) | (1L << (DISABLE_BROKER - 546)) | (1L << (ENABLE_BROKER - 546)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 546)) | (1L << (READ_COMMITTED_SNAPSHOT - 546)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 546)) | (1L << (RECURSIVE_TRIGGERS - 546)) | (1L << (QUOTED_IDENTIFIER - 546)) | (1L << (NUMERIC_ROUNDABORT - 546)) | (1L << (CONCAT_NULL_YIELDS_NULL - 546)) | (1L << (COMPATIBILITY_LEVEL - 546)) | (1L << (ARITHABORT - 546)) | (1L << (ANSI_WARNINGS - 546)) | (1L << (ANSI_PADDING - 546)) | (1L << (ANSI_NULLS - 546)) | (1L << (ANSI_NULL_DEFAULT - 546)) | (1L << (PAGE_VERIFY - 546)) | (1L << (CHECKSUM - 546)) | (1L << (TORN_PAGE_DETECTION - 546)) | (1L << (BULK_LOGGED - 546)) | (1L << (RECOVERY - 546)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 546)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 546)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 546)) | (1L << (EXECUTION_COUNT - 546)) | (1L << (QUERY_CAPTURE_POLICY - 546)) | (1L << (WAIT_STATS_CAPTURE_MODE - 546)) | (1L << (MAX_PLANS_PER_QUERY - 546)) | (1L << (QUERY_CAPTURE_MODE - 546)) | (1L << (SIZE_BASED_CLEANUP_MODE - 546)) | (1L << (INTERVAL_LENGTH_MINUTES - 546)) | (1L << (MAX_STORAGE_SIZE_MB - 546)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 546)) | (1L << (CLEANUP_POLICY - 546)) | (1L << (CUSTOM - 546)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 546)) | (1L << (OPERATION_MODE - 546)) | (1L << (QUERY_STORE - 546)) | (1L << (CURSOR_DEFAULT - 546)) | (1L << (GLOBAL - 546)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 546)) | (1L << (HOURS - 546)) | (1L << (CHANGE_RETENTION - 546)) | (1L << (AUTO_CLEANUP - 546)) | (1L << (CHANGE_TRACKING - 546)) | (1L << (AUTOMATIC_TUNING - 546)) | (1L << (FORCE_LAST_GOOD_PLAN - 546)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 546)) | (1L << (AUTO_UPDATE_STATISTICS - 546)) | (1L << (AUTO_SHRINK - 546)) | (1L << (AUTO_CREATE_STATISTICS - 546)) | (1L << (INCREMENTAL - 546)) | (1L << (AUTO_CLOSE - 546)) | (1L << (DATA_RETENTION - 546)) | (1L << (TEMPORAL_HISTORY_RETENTION - 546)) | (1L << (EDITION - 546)))) != 0) || ((((_la - 610)) & ~0x3f) == 0 && ((1L << (_la - 610)) & ((1L << (MIXED_PAGE_ALLOCATION - 610)) | (1L << (DISABLED - 610)) | (1L << (ALLOWED - 610)) | (1L << (HADR - 610)) | (1L << (MULTI_USER - 610)) | (1L << (RESTRICTED_USER - 610)) | (1L << (SINGLE_USER - 610)) | (1L << (OFFLINE - 610)) | (1L << (EMERGENCY - 610)) | (1L << (SUSPEND - 610)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 610)) | (1L << (ELASTIC_POOL - 610)) | (1L << (SERVICE_OBJECTIVE - 610)) | (1L << (DATABASE_NAME - 610)) | (1L << (ALLOW_CONNECTIONS - 610)) | (1L << (GEO - 610)) | (1L << (NAMED - 610)) | (1L << (DATEFIRST - 610)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 610)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 610)) | (1L << (SECONDARY - 610)) | (1L << (FAILOVER - 610)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 610)) | (1L << (DEFAULT_LANGUAGE - 610)) | (1L << (INLINE - 610)) | (1L << (NESTED_TRIGGERS - 610)) | (1L << (TRANSFORM_NOISE_WORDS - 610)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 610)) | (1L << (PERSISTENT_LOG_BUFFER - 610)) | (1L << (DIRECTORY_NAME - 610)) | (1L << (DATEFORMAT - 610)) | (1L << (DELAYED_DURABILITY - 610)) | (1L << (AUTHORIZATION - 610)) | (1L << (TRANSFER - 610)) | (1L << (PROVIDER - 610)) | (1L << (SEARCH - 610)) | (1L << (MEMBER - 610)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
14087 				{
14088 				setState(2195);
14089 				_errHandler.sync(this);
14090 				_la = _input.LA(1);
14091 				if (_la==LP_) {
14092 					{
14093 					setState(2194);
14094 					match(LP_);
14095 					}
14096 				}
14097 
14098 				setState(2197);
14099 				indexName();
14100 				setState(2202);
14101 				_errHandler.sync(this);
14102 				_la = _input.LA(1);
14103 				while (_la==COMMA_) {
14104 					{
14105 					{
14106 					setState(2198);
14107 					match(COMMA_);
14108 					setState(2199);
14109 					indexName();
14110 					}
14111 					}
14112 					setState(2204);
14113 					_errHandler.sync(this);
14114 					_la = _input.LA(1);
14115 				}
14116 				setState(2206);
14117 				_errHandler.sync(this);
14118 				_la = _input.LA(1);
14119 				if (_la==RP_) {
14120 					{
14121 					setState(2205);
14122 					match(RP_);
14123 					}
14124 				}
14125 
14126 				}
14127 			}
14128 
14129 			setState(2211);
14130 			_errHandler.sync(this);
14131 			_la = _input.LA(1);
14132 			if (_la==WITH) {
14133 				{
14134 				setState(2210);
14135 				statisticsWithClause();
14136 				}
14137 			}
14138 
14139 			}
14140 		}
14141 		catch (RecognitionException re) {
14142 			_localctx.exception = re;
14143 			_errHandler.reportError(this, re);
14144 			_errHandler.recover(this, re);
14145 		}
14146 		finally {
14147 			exitRule();
14148 		}
14149 		return _localctx;
14150 	}
14151 
14152 	public static class StatisticsWithClauseContext extends ParserRuleContext {
14153 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
14154 		public SampleOptionContext sampleOption() {
14155 			return getRuleContext(SampleOptionContext.class,0);
14156 		}
14157 		public StatisticsOptionsContext statisticsOptions() {
14158 			return getRuleContext(StatisticsOptionsContext.class,0);
14159 		}
14160 		public StatisticsWithClauseContext(ParserRuleContext parent, int invokingState) {
14161 			super(parent, invokingState);
14162 		}
14163 		@Override public int getRuleIndex() { return RULE_statisticsWithClause; }
14164 		@Override
14165 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14166 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsWithClause(this);
14167 			else return visitor.visitChildren(this);
14168 		}
14169 	}
14170 
14171 	public final StatisticsWithClauseContext statisticsWithClause() throws RecognitionException {
14172 		StatisticsWithClauseContext _localctx = new StatisticsWithClauseContext(_ctx, getState());
14173 		enterRule(_localctx, 296, RULE_statisticsWithClause);
14174 		int _la;
14175 		try {
14176 			enterOuterAlt(_localctx, 1);
14177 			{
14178 			setState(2213);
14179 			match(WITH);
14180 			setState(2215);
14181 			_errHandler.sync(this);
14182 			_la = _input.LA(1);
14183 			if (((((_la - 687)) & ~0x3f) == 0 && ((1L << (_la - 687)) & ((1L << (FULLSCAN - 687)) | (1L << (SAMPLE - 687)) | (1L << (RESAMPLE - 687)))) != 0)) {
14184 				{
14185 				setState(2214);
14186 				sampleOption();
14187 				}
14188 			}
14189 
14190 			setState(2218);
14191 			_errHandler.sync(this);
14192 			_la = _input.LA(1);
14193 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP) {
14194 				{
14195 				setState(2217);
14196 				statisticsOptions();
14197 				}
14198 			}
14199 
14200 			}
14201 		}
14202 		catch (RecognitionException re) {
14203 			_localctx.exception = re;
14204 			_errHandler.reportError(this, re);
14205 			_errHandler.recover(this, re);
14206 		}
14207 		finally {
14208 			exitRule();
14209 		}
14210 		return _localctx;
14211 	}
14212 
14213 	public static class SampleOptionContext extends ParserRuleContext {
14214 		public TerminalNode FULLSCAN() { return getToken(SQLServerStatementParser.FULLSCAN, 0); }
14215 		public TerminalNode PERSIST_SAMPLE_PERCENT() { return getToken(SQLServerStatementParser.PERSIST_SAMPLE_PERCENT, 0); }
14216 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
14217 		public TerminalNode SAMPLE() { return getToken(SQLServerStatementParser.SAMPLE, 0); }
14218 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
14219 		public TerminalNode NUMBER_(int i) {
14220 			return getToken(SQLServerStatementParser.NUMBER_, i);
14221 		}
14222 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14223 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
14224 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
14225 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
14226 		public TerminalNode RESAMPLE() { return getToken(SQLServerStatementParser.RESAMPLE, 0); }
14227 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
14228 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14229 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14230 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14231 		public TerminalNode COMMA_(int i) {
14232 			return getToken(SQLServerStatementParser.COMMA_, i);
14233 		}
14234 		public SampleOptionContext(ParserRuleContext parent, int invokingState) {
14235 			super(parent, invokingState);
14236 		}
14237 		@Override public int getRuleIndex() { return RULE_sampleOption; }
14238 		@Override
14239 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14240 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSampleOption(this);
14241 			else return visitor.visitChildren(this);
14242 		}
14243 	}
14244 
14245 	public final SampleOptionContext sampleOption() throws RecognitionException {
14246 		SampleOptionContext _localctx = new SampleOptionContext(_ctx, getState());
14247 		enterRule(_localctx, 298, RULE_sampleOption);
14248 		int _la;
14249 		try {
14250 			setState(2246);
14251 			_errHandler.sync(this);
14252 			switch (_input.LA(1)) {
14253 			case FULLSCAN:
14254 			case SAMPLE:
14255 				enterOuterAlt(_localctx, 1);
14256 				{
14257 				setState(2224);
14258 				_errHandler.sync(this);
14259 				switch (_input.LA(1)) {
14260 				case FULLSCAN:
14261 					{
14262 					setState(2220);
14263 					match(FULLSCAN);
14264 					}
14265 					break;
14266 				case SAMPLE:
14267 					{
14268 					{
14269 					setState(2221);
14270 					match(SAMPLE);
14271 					setState(2222);
14272 					match(NUMBER_);
14273 					setState(2223);
14274 					_la = _input.LA(1);
14275 					if ( !(_la==PERCENT || _la==ROWS) ) {
14276 					_errHandler.recoverInline(this);
14277 					}
14278 					else {
14279 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14280 						_errHandler.reportMatch(this);
14281 						consume();
14282 					}
14283 					}
14284 					}
14285 					break;
14286 				default:
14287 					throw new NoViableAltException(this);
14288 				}
14289 				setState(2229);
14290 				_errHandler.sync(this);
14291 				_la = _input.LA(1);
14292 				if (_la==PERSIST_SAMPLE_PERCENT) {
14293 					{
14294 					setState(2226);
14295 					match(PERSIST_SAMPLE_PERCENT);
14296 					setState(2227);
14297 					match(EQ_);
14298 					setState(2228);
14299 					_la = _input.LA(1);
14300 					if ( !(_la==ON || _la==OFF) ) {
14301 					_errHandler.recoverInline(this);
14302 					}
14303 					else {
14304 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14305 						_errHandler.reportMatch(this);
14306 						consume();
14307 					}
14308 					}
14309 				}
14310 
14311 				}
14312 				break;
14313 			case RESAMPLE:
14314 				enterOuterAlt(_localctx, 2);
14315 				{
14316 				setState(2231);
14317 				match(RESAMPLE);
14318 				setState(2244);
14319 				_errHandler.sync(this);
14320 				_la = _input.LA(1);
14321 				if (_la==ON) {
14322 					{
14323 					setState(2232);
14324 					match(ON);
14325 					setState(2233);
14326 					match(PARTITIONS);
14327 					setState(2234);
14328 					match(LP_);
14329 					setState(2235);
14330 					match(NUMBER_);
14331 					setState(2240);
14332 					_errHandler.sync(this);
14333 					_la = _input.LA(1);
14334 					while (_la==COMMA_) {
14335 						{
14336 						{
14337 						setState(2236);
14338 						match(COMMA_);
14339 						setState(2237);
14340 						match(NUMBER_);
14341 						}
14342 						}
14343 						setState(2242);
14344 						_errHandler.sync(this);
14345 						_la = _input.LA(1);
14346 					}
14347 					setState(2243);
14348 					match(RP_);
14349 					}
14350 				}
14351 
14352 				}
14353 				break;
14354 			default:
14355 				throw new NoViableAltException(this);
14356 			}
14357 		}
14358 		catch (RecognitionException re) {
14359 			_localctx.exception = re;
14360 			_errHandler.reportError(this, re);
14361 			_errHandler.recover(this, re);
14362 		}
14363 		finally {
14364 			exitRule();
14365 		}
14366 		return _localctx;
14367 	}
14368 
14369 	public static class StatisticsOptionsContext extends ParserRuleContext {
14370 		public List<StatisticsOptionContext> statisticsOption() {
14371 			return getRuleContexts(StatisticsOptionContext.class);
14372 		}
14373 		public StatisticsOptionContext statisticsOption(int i) {
14374 			return getRuleContext(StatisticsOptionContext.class,i);
14375 		}
14376 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14377 		public TerminalNode COMMA_(int i) {
14378 			return getToken(SQLServerStatementParser.COMMA_, i);
14379 		}
14380 		public StatisticsOptionsContext(ParserRuleContext parent, int invokingState) {
14381 			super(parent, invokingState);
14382 		}
14383 		@Override public int getRuleIndex() { return RULE_statisticsOptions; }
14384 		@Override
14385 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14386 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOptions(this);
14387 			else return visitor.visitChildren(this);
14388 		}
14389 	}
14390 
14391 	public final StatisticsOptionsContext statisticsOptions() throws RecognitionException {
14392 		StatisticsOptionsContext _localctx = new StatisticsOptionsContext(_ctx, getState());
14393 		enterRule(_localctx, 300, RULE_statisticsOptions);
14394 		int _la;
14395 		try {
14396 			enterOuterAlt(_localctx, 1);
14397 			{
14398 			setState(2252); 
14399 			_errHandler.sync(this);
14400 			_la = _input.LA(1);
14401 			do {
14402 				{
14403 				{
14404 				setState(2249);
14405 				_errHandler.sync(this);
14406 				_la = _input.LA(1);
14407 				if (_la==COMMA_) {
14408 					{
14409 					setState(2248);
14410 					match(COMMA_);
14411 					}
14412 				}
14413 
14414 				setState(2251);
14415 				statisticsOption();
14416 				}
14417 				}
14418 				setState(2254); 
14419 				_errHandler.sync(this);
14420 				_la = _input.LA(1);
14421 			} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP );
14422 			}
14423 		}
14424 		catch (RecognitionException re) {
14425 			_localctx.exception = re;
14426 			_errHandler.reportError(this, re);
14427 			_errHandler.recover(this, re);
14428 		}
14429 		finally {
14430 			exitRule();
14431 		}
14432 		return _localctx;
14433 	}
14434 
14435 	public static class StatisticsOptionContext extends ParserRuleContext {
14436 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
14437 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
14438 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
14439 		public TerminalNode NORECOMPUTE() { return getToken(SQLServerStatementParser.NORECOMPUTE, 0); }
14440 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
14441 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
14442 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14443 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
14444 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
14445 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
14446 		public TerminalNode AUTO_DROP() { return getToken(SQLServerStatementParser.AUTO_DROP, 0); }
14447 		public StatisticsOptionContext(ParserRuleContext parent, int invokingState) {
14448 			super(parent, invokingState);
14449 		}
14450 		@Override public int getRuleIndex() { return RULE_statisticsOption; }
14451 		@Override
14452 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14453 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOption(this);
14454 			else return visitor.visitChildren(this);
14455 		}
14456 	}
14457 
14458 	public final StatisticsOptionContext statisticsOption() throws RecognitionException {
14459 		StatisticsOptionContext _localctx = new StatisticsOptionContext(_ctx, getState());
14460 		enterRule(_localctx, 302, RULE_statisticsOption);
14461 		int _la;
14462 		try {
14463 			setState(2269);
14464 			_errHandler.sync(this);
14465 			switch (_input.LA(1)) {
14466 			case ALL:
14467 				enterOuterAlt(_localctx, 1);
14468 				{
14469 				setState(2256);
14470 				match(ALL);
14471 				}
14472 				break;
14473 			case COLUMNS:
14474 				enterOuterAlt(_localctx, 2);
14475 				{
14476 				setState(2257);
14477 				match(COLUMNS);
14478 				}
14479 				break;
14480 			case INDEX:
14481 				enterOuterAlt(_localctx, 3);
14482 				{
14483 				setState(2258);
14484 				match(INDEX);
14485 				}
14486 				break;
14487 			case NORECOMPUTE:
14488 				enterOuterAlt(_localctx, 4);
14489 				{
14490 				setState(2259);
14491 				match(NORECOMPUTE);
14492 				}
14493 				break;
14494 			case INCREMENTAL:
14495 				enterOuterAlt(_localctx, 5);
14496 				{
14497 				setState(2260);
14498 				match(INCREMENTAL);
14499 				setState(2261);
14500 				match(EQ_);
14501 				setState(2262);
14502 				_la = _input.LA(1);
14503 				if ( !(_la==ON || _la==OFF) ) {
14504 				_errHandler.recoverInline(this);
14505 				}
14506 				else {
14507 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14508 					_errHandler.reportMatch(this);
14509 					consume();
14510 				}
14511 				}
14512 				break;
14513 			case MAXDOP:
14514 				enterOuterAlt(_localctx, 6);
14515 				{
14516 				setState(2263);
14517 				match(MAXDOP);
14518 				setState(2264);
14519 				match(EQ_);
14520 				setState(2265);
14521 				match(NUMBER_);
14522 				}
14523 				break;
14524 			case AUTO_DROP:
14525 				enterOuterAlt(_localctx, 7);
14526 				{
14527 				setState(2266);
14528 				match(AUTO_DROP);
14529 				setState(2267);
14530 				match(EQ_);
14531 				setState(2268);
14532 				_la = _input.LA(1);
14533 				if ( !(_la==ON || _la==OFF) ) {
14534 				_errHandler.recoverInline(this);
14535 				}
14536 				else {
14537 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14538 					_errHandler.reportMatch(this);
14539 					consume();
14540 				}
14541 				}
14542 				break;
14543 			default:
14544 				throw new NoViableAltException(this);
14545 			}
14546 		}
14547 		catch (RecognitionException re) {
14548 			_localctx.exception = re;
14549 			_errHandler.reportError(this, re);
14550 			_errHandler.recover(this, re);
14551 		}
14552 		finally {
14553 			exitRule();
14554 		}
14555 		return _localctx;
14556 	}
14557 
14558 	public static class FileTableClauseContext extends ParserRuleContext {
14559 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
14560 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
14561 		public FileTableClauseContext(ParserRuleContext parent, int invokingState) {
14562 			super(parent, invokingState);
14563 		}
14564 		@Override public int getRuleIndex() { return RULE_fileTableClause; }
14565 		@Override
14566 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14567 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileTableClause(this);
14568 			else return visitor.visitChildren(this);
14569 		}
14570 	}
14571 
14572 	public final FileTableClauseContext fileTableClause() throws RecognitionException {
14573 		FileTableClauseContext _localctx = new FileTableClauseContext(_ctx, getState());
14574 		enterRule(_localctx, 304, RULE_fileTableClause);
14575 		int _la;
14576 		try {
14577 			enterOuterAlt(_localctx, 1);
14578 			{
14579 			setState(2273);
14580 			_errHandler.sync(this);
14581 			_la = _input.LA(1);
14582 			if (_la==AS) {
14583 				{
14584 				setState(2271);
14585 				match(AS);
14586 				setState(2272);
14587 				match(FILETABLE);
14588 				}
14589 			}
14590 
14591 			}
14592 		}
14593 		catch (RecognitionException re) {
14594 			_localctx.exception = re;
14595 			_errHandler.reportError(this, re);
14596 			_errHandler.recover(this, re);
14597 		}
14598 		finally {
14599 			exitRule();
14600 		}
14601 		return _localctx;
14602 	}
14603 
14604 	public static class CreateDefinitionClauseContext extends ParserRuleContext {
14605 		public CreateTableDefinitionsContext createTableDefinitions() {
14606 			return getRuleContext(CreateTableDefinitionsContext.class,0);
14607 		}
14608 		public PartitionSchemeContext partitionScheme() {
14609 			return getRuleContext(PartitionSchemeContext.class,0);
14610 		}
14611 		public FileGroupContext fileGroup() {
14612 			return getRuleContext(FileGroupContext.class,0);
14613 		}
14614 		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
14615 			super(parent, invokingState);
14616 		}
14617 		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
14618 		@Override
14619 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14620 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDefinitionClause(this);
14621 			else return visitor.visitChildren(this);
14622 		}
14623 	}
14624 
14625 	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
14626 		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
14627 		enterRule(_localctx, 306, RULE_createDefinitionClause);
14628 		try {
14629 			enterOuterAlt(_localctx, 1);
14630 			{
14631 			setState(2275);
14632 			createTableDefinitions();
14633 			setState(2276);
14634 			partitionScheme();
14635 			setState(2277);
14636 			fileGroup();
14637 			}
14638 		}
14639 		catch (RecognitionException re) {
14640 			_localctx.exception = re;
14641 			_errHandler.reportError(this, re);
14642 			_errHandler.recover(this, re);
14643 		}
14644 		finally {
14645 			exitRule();
14646 		}
14647 		return _localctx;
14648 	}
14649 
14650 	public static class CreateTableDefinitionsContext extends ParserRuleContext {
14651 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14652 		public List<CreateTableDefinitionContext> createTableDefinition() {
14653 			return getRuleContexts(CreateTableDefinitionContext.class);
14654 		}
14655 		public CreateTableDefinitionContext createTableDefinition(int i) {
14656 			return getRuleContext(CreateTableDefinitionContext.class,i);
14657 		}
14658 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14659 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14660 		public TerminalNode COMMA_(int i) {
14661 			return getToken(SQLServerStatementParser.COMMA_, i);
14662 		}
14663 		public PeriodClauseContext periodClause() {
14664 			return getRuleContext(PeriodClauseContext.class,0);
14665 		}
14666 		public CreateTableDefinitionsContext(ParserRuleContext parent, int invokingState) {
14667 			super(parent, invokingState);
14668 		}
14669 		@Override public int getRuleIndex() { return RULE_createTableDefinitions; }
14670 		@Override
14671 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14672 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinitions(this);
14673 			else return visitor.visitChildren(this);
14674 		}
14675 	}
14676 
14677 	public final CreateTableDefinitionsContext createTableDefinitions() throws RecognitionException {
14678 		CreateTableDefinitionsContext _localctx = new CreateTableDefinitionsContext(_ctx, getState());
14679 		enterRule(_localctx, 308, RULE_createTableDefinitions);
14680 		int _la;
14681 		try {
14682 			int _alt;
14683 			enterOuterAlt(_localctx, 1);
14684 			{
14685 			setState(2279);
14686 			match(LP_);
14687 			setState(2280);
14688 			createTableDefinition();
14689 			setState(2285);
14690 			_errHandler.sync(this);
14691 			_alt = getInterpreter().adaptivePredict(_input,160,_ctx);
14692 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
14693 				if ( _alt==1 ) {
14694 					{
14695 					{
14696 					setState(2281);
14697 					match(COMMA_);
14698 					setState(2282);
14699 					createTableDefinition();
14700 					}
14701 					} 
14702 				}
14703 				setState(2287);
14704 				_errHandler.sync(this);
14705 				_alt = getInterpreter().adaptivePredict(_input,160,_ctx);
14706 			}
14707 			setState(2290);
14708 			_errHandler.sync(this);
14709 			_la = _input.LA(1);
14710 			if (_la==COMMA_) {
14711 				{
14712 				setState(2288);
14713 				match(COMMA_);
14714 				setState(2289);
14715 				periodClause();
14716 				}
14717 			}
14718 
14719 			setState(2292);
14720 			match(RP_);
14721 			}
14722 		}
14723 		catch (RecognitionException re) {
14724 			_localctx.exception = re;
14725 			_errHandler.reportError(this, re);
14726 			_errHandler.recover(this, re);
14727 		}
14728 		finally {
14729 			exitRule();
14730 		}
14731 		return _localctx;
14732 	}
14733 
14734 	public static class CreateTableDefinitionContext extends ParserRuleContext {
14735 		public ColumnDefinitionContext columnDefinition() {
14736 			return getRuleContext(ColumnDefinitionContext.class,0);
14737 		}
14738 		public ComputedColumnDefinitionContext computedColumnDefinition() {
14739 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
14740 		}
14741 		public ColumnSetDefinitionContext columnSetDefinition() {
14742 			return getRuleContext(ColumnSetDefinitionContext.class,0);
14743 		}
14744 		public TableConstraintContext tableConstraint() {
14745 			return getRuleContext(TableConstraintContext.class,0);
14746 		}
14747 		public TableIndexContext tableIndex() {
14748 			return getRuleContext(TableIndexContext.class,0);
14749 		}
14750 		public CreateTableDefinitionContext(ParserRuleContext parent, int invokingState) {
14751 			super(parent, invokingState);
14752 		}
14753 		@Override public int getRuleIndex() { return RULE_createTableDefinition; }
14754 		@Override
14755 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14756 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinition(this);
14757 			else return visitor.visitChildren(this);
14758 		}
14759 	}
14760 
14761 	public final CreateTableDefinitionContext createTableDefinition() throws RecognitionException {
14762 		CreateTableDefinitionContext _localctx = new CreateTableDefinitionContext(_ctx, getState());
14763 		enterRule(_localctx, 310, RULE_createTableDefinition);
14764 		try {
14765 			setState(2299);
14766 			_errHandler.sync(this);
14767 			switch ( getInterpreter().adaptivePredict(_input,162,_ctx) ) {
14768 			case 1:
14769 				enterOuterAlt(_localctx, 1);
14770 				{
14771 				setState(2294);
14772 				columnDefinition();
14773 				}
14774 				break;
14775 			case 2:
14776 				enterOuterAlt(_localctx, 2);
14777 				{
14778 				setState(2295);
14779 				computedColumnDefinition();
14780 				}
14781 				break;
14782 			case 3:
14783 				enterOuterAlt(_localctx, 3);
14784 				{
14785 				setState(2296);
14786 				columnSetDefinition();
14787 				}
14788 				break;
14789 			case 4:
14790 				enterOuterAlt(_localctx, 4);
14791 				{
14792 				setState(2297);
14793 				tableConstraint();
14794 				}
14795 				break;
14796 			case 5:
14797 				enterOuterAlt(_localctx, 5);
14798 				{
14799 				setState(2298);
14800 				tableIndex();
14801 				}
14802 				break;
14803 			}
14804 		}
14805 		catch (RecognitionException re) {
14806 			_localctx.exception = re;
14807 			_errHandler.reportError(this, re);
14808 			_errHandler.recover(this, re);
14809 		}
14810 		finally {
14811 			exitRule();
14812 		}
14813 		return _localctx;
14814 	}
14815 
14816 	public static class ColumnDefinitionContext extends ParserRuleContext {
14817 		public ColumnNameContext columnName() {
14818 			return getRuleContext(ColumnNameContext.class,0);
14819 		}
14820 		public DataTypeContext dataType() {
14821 			return getRuleContext(DataTypeContext.class,0);
14822 		}
14823 		public ColumnConstraintsContext columnConstraints() {
14824 			return getRuleContext(ColumnConstraintsContext.class,0);
14825 		}
14826 		public List<ColumnDefinitionOptionContext> columnDefinitionOption() {
14827 			return getRuleContexts(ColumnDefinitionOptionContext.class);
14828 		}
14829 		public ColumnDefinitionOptionContext columnDefinitionOption(int i) {
14830 			return getRuleContext(ColumnDefinitionOptionContext.class,i);
14831 		}
14832 		public ColumnIndexContext columnIndex() {
14833 			return getRuleContext(ColumnIndexContext.class,0);
14834 		}
14835 		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
14836 			super(parent, invokingState);
14837 		}
14838 		@Override public int getRuleIndex() { return RULE_columnDefinition; }
14839 		@Override
14840 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14841 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinition(this);
14842 			else return visitor.visitChildren(this);
14843 		}
14844 	}
14845 
14846 	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
14847 		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
14848 		enterRule(_localctx, 312, RULE_columnDefinition);
14849 		int _la;
14850 		try {
14851 			int _alt;
14852 			enterOuterAlt(_localctx, 1);
14853 			{
14854 			setState(2301);
14855 			columnName();
14856 			setState(2302);
14857 			dataType();
14858 			setState(2306);
14859 			_errHandler.sync(this);
14860 			_alt = getInterpreter().adaptivePredict(_input,163,_ctx);
14861 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
14862 				if ( _alt==1 ) {
14863 					{
14864 					{
14865 					setState(2303);
14866 					columnDefinitionOption();
14867 					}
14868 					} 
14869 				}
14870 				setState(2308);
14871 				_errHandler.sync(this);
14872 				_alt = getInterpreter().adaptivePredict(_input,163,_ctx);
14873 			}
14874 			setState(2309);
14875 			columnConstraints();
14876 			setState(2311);
14877 			_errHandler.sync(this);
14878 			_la = _input.LA(1);
14879 			if (_la==INDEX) {
14880 				{
14881 				setState(2310);
14882 				columnIndex();
14883 				}
14884 			}
14885 
14886 			}
14887 		}
14888 		catch (RecognitionException re) {
14889 			_localctx.exception = re;
14890 			_errHandler.reportError(this, re);
14891 			_errHandler.recover(this, re);
14892 		}
14893 		finally {
14894 			exitRule();
14895 		}
14896 		return _localctx;
14897 	}
14898 
14899 	public static class ColumnDefinitionOptionContext extends ParserRuleContext {
14900 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
14901 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
14902 		public CollationNameContext collationName() {
14903 			return getRuleContext(CollationNameContext.class,0);
14904 		}
14905 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
14906 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
14907 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
14908 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14909 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14910 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
14911 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
14912 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14913 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
14914 		public ExprContext expr() {
14915 			return getRuleContext(ExprContext.class,0);
14916 		}
14917 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
14918 		public IgnoredIdentifierContext ignoredIdentifier() {
14919 			return getRuleContext(IgnoredIdentifierContext.class,0);
14920 		}
14921 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
14922 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
14923 		public TerminalNode NUMBER_(int i) {
14924 			return getToken(SQLServerStatementParser.NUMBER_, i);
14925 		}
14926 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14927 		public TerminalNode COMMA_(int i) {
14928 			return getToken(SQLServerStatementParser.COMMA_, i);
14929 		}
14930 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
14931 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
14932 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
14933 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
14934 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
14935 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
14936 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
14937 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
14938 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
14939 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
14940 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
14941 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
14942 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
14943 		public EncryptedOptionsContext encryptedOptions() {
14944 			return getRuleContext(EncryptedOptionsContext.class,0);
14945 		}
14946 		public List<ColumnConstraintContext> columnConstraint() {
14947 			return getRuleContexts(ColumnConstraintContext.class);
14948 		}
14949 		public ColumnConstraintContext columnConstraint(int i) {
14950 			return getRuleContext(ColumnConstraintContext.class,i);
14951 		}
14952 		public ColumnIndexContext columnIndex() {
14953 			return getRuleContext(ColumnIndexContext.class,0);
14954 		}
14955 		public ColumnDefinitionOptionContext(ParserRuleContext parent, int invokingState) {
14956 			super(parent, invokingState);
14957 		}
14958 		@Override public int getRuleIndex() { return RULE_columnDefinitionOption; }
14959 		@Override
14960 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14961 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinitionOption(this);
14962 			else return visitor.visitChildren(this);
14963 		}
14964 	}
14965 
14966 	public final ColumnDefinitionOptionContext columnDefinitionOption() throws RecognitionException {
14967 		ColumnDefinitionOptionContext _localctx = new ColumnDefinitionOptionContext(_ctx, getState());
14968 		enterRule(_localctx, 314, RULE_columnDefinitionOption);
14969 		int _la;
14970 		try {
14971 			int _alt;
14972 			setState(2366);
14973 			_errHandler.sync(this);
14974 			switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) {
14975 			case 1:
14976 				enterOuterAlt(_localctx, 1);
14977 				{
14978 				setState(2313);
14979 				match(FILESTREAM);
14980 				}
14981 				break;
14982 			case 2:
14983 				enterOuterAlt(_localctx, 2);
14984 				{
14985 				setState(2314);
14986 				match(COLLATE);
14987 				setState(2315);
14988 				collationName();
14989 				}
14990 				break;
14991 			case 3:
14992 				enterOuterAlt(_localctx, 3);
14993 				{
14994 				setState(2316);
14995 				match(SPARSE);
14996 				}
14997 				break;
14998 			case 4:
14999 				enterOuterAlt(_localctx, 4);
15000 				{
15001 				setState(2317);
15002 				match(MASKED);
15003 				setState(2318);
15004 				match(WITH);
15005 				setState(2319);
15006 				match(LP_);
15007 				setState(2320);
15008 				match(FUNCTION);
15009 				setState(2321);
15010 				match(EQ_);
15011 				setState(2322);
15012 				match(STRING_);
15013 				setState(2323);
15014 				match(RP_);
15015 				}
15016 				break;
15017 			case 5:
15018 				enterOuterAlt(_localctx, 5);
15019 				{
15020 				setState(2326);
15021 				_errHandler.sync(this);
15022 				_la = _input.LA(1);
15023 				if (_la==CONSTRAINT) {
15024 					{
15025 					setState(2324);
15026 					match(CONSTRAINT);
15027 					setState(2325);
15028 					ignoredIdentifier();
15029 					}
15030 				}
15031 
15032 				setState(2328);
15033 				match(DEFAULT);
15034 				setState(2329);
15035 				expr(0);
15036 				}
15037 				break;
15038 			case 6:
15039 				enterOuterAlt(_localctx, 6);
15040 				{
15041 				setState(2330);
15042 				match(IDENTITY);
15043 				setState(2336);
15044 				_errHandler.sync(this);
15045 				_la = _input.LA(1);
15046 				if (_la==LP_) {
15047 					{
15048 					setState(2331);
15049 					match(LP_);
15050 					setState(2332);
15051 					match(NUMBER_);
15052 					setState(2333);
15053 					match(COMMA_);
15054 					setState(2334);
15055 					match(NUMBER_);
15056 					setState(2335);
15057 					match(RP_);
15058 					}
15059 				}
15060 
15061 				}
15062 				break;
15063 			case 7:
15064 				enterOuterAlt(_localctx, 7);
15065 				{
15066 				setState(2338);
15067 				match(NOT);
15068 				setState(2339);
15069 				match(FOR);
15070 				setState(2340);
15071 				match(REPLICATION);
15072 				}
15073 				break;
15074 			case 8:
15075 				enterOuterAlt(_localctx, 8);
15076 				{
15077 				setState(2341);
15078 				match(GENERATED);
15079 				setState(2342);
15080 				match(ALWAYS);
15081 				setState(2343);
15082 				match(AS);
15083 				setState(2344);
15084 				match(ROW);
15085 				setState(2345);
15086 				_la = _input.LA(1);
15087 				if ( !(_la==START || _la==END) ) {
15088 				_errHandler.recoverInline(this);
15089 				}
15090 				else {
15091 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15092 					_errHandler.reportMatch(this);
15093 					consume();
15094 				}
15095 				setState(2347);
15096 				_errHandler.sync(this);
15097 				_la = _input.LA(1);
15098 				if (_la==HIDDEN_) {
15099 					{
15100 					setState(2346);
15101 					match(HIDDEN_);
15102 					}
15103 				}
15104 
15105 				}
15106 				break;
15107 			case 9:
15108 				enterOuterAlt(_localctx, 9);
15109 				{
15110 				setState(2350);
15111 				_errHandler.sync(this);
15112 				_la = _input.LA(1);
15113 				if (_la==NOT) {
15114 					{
15115 					setState(2349);
15116 					match(NOT);
15117 					}
15118 				}
15119 
15120 				setState(2352);
15121 				match(NULL);
15122 				}
15123 				break;
15124 			case 10:
15125 				enterOuterAlt(_localctx, 10);
15126 				{
15127 				setState(2353);
15128 				match(ROWGUIDCOL);
15129 				}
15130 				break;
15131 			case 11:
15132 				enterOuterAlt(_localctx, 11);
15133 				{
15134 				setState(2354);
15135 				match(ENCRYPTED);
15136 				setState(2355);
15137 				match(WITH);
15138 				setState(2356);
15139 				encryptedOptions();
15140 				}
15141 				break;
15142 			case 12:
15143 				enterOuterAlt(_localctx, 12);
15144 				{
15145 				setState(2357);
15146 				columnConstraint();
15147 				setState(2362);
15148 				_errHandler.sync(this);
15149 				_alt = getInterpreter().adaptivePredict(_input,169,_ctx);
15150 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
15151 					if ( _alt==1 ) {
15152 						{
15153 						{
15154 						setState(2358);
15155 						match(COMMA_);
15156 						setState(2359);
15157 						columnConstraint();
15158 						}
15159 						} 
15160 					}
15161 					setState(2364);
15162 					_errHandler.sync(this);
15163 					_alt = getInterpreter().adaptivePredict(_input,169,_ctx);
15164 				}
15165 				}
15166 				break;
15167 			case 13:
15168 				enterOuterAlt(_localctx, 13);
15169 				{
15170 				setState(2365);
15171 				columnIndex();
15172 				}
15173 				break;
15174 			}
15175 		}
15176 		catch (RecognitionException re) {
15177 			_localctx.exception = re;
15178 			_errHandler.reportError(this, re);
15179 			_errHandler.recover(this, re);
15180 		}
15181 		finally {
15182 			exitRule();
15183 		}
15184 		return _localctx;
15185 	}
15186 
15187 	public static class EncryptedOptionsContext extends ParserRuleContext {
15188 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15189 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
15190 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
15191 		public TerminalNode EQ_(int i) {
15192 			return getToken(SQLServerStatementParser.EQ_, i);
15193 		}
15194 		public IgnoredIdentifierContext ignoredIdentifier() {
15195 			return getRuleContext(IgnoredIdentifierContext.class,0);
15196 		}
15197 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15198 		public TerminalNode COMMA_(int i) {
15199 			return getToken(SQLServerStatementParser.COMMA_, i);
15200 		}
15201 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
15202 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
15203 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
15204 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15205 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
15206 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
15207 		public EncryptedOptionsContext(ParserRuleContext parent, int invokingState) {
15208 			super(parent, invokingState);
15209 		}
15210 		@Override public int getRuleIndex() { return RULE_encryptedOptions; }
15211 		@Override
15212 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15213 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEncryptedOptions(this);
15214 			else return visitor.visitChildren(this);
15215 		}
15216 	}
15217 
15218 	public final EncryptedOptionsContext encryptedOptions() throws RecognitionException {
15219 		EncryptedOptionsContext _localctx = new EncryptedOptionsContext(_ctx, getState());
15220 		enterRule(_localctx, 316, RULE_encryptedOptions);
15221 		int _la;
15222 		try {
15223 			enterOuterAlt(_localctx, 1);
15224 			{
15225 			setState(2368);
15226 			match(LP_);
15227 			setState(2369);
15228 			match(COLUMN_ENCRYPTION_KEY);
15229 			setState(2370);
15230 			match(EQ_);
15231 			setState(2371);
15232 			ignoredIdentifier();
15233 			setState(2372);
15234 			match(COMMA_);
15235 			setState(2373);
15236 			match(ENCRYPTION_TYPE);
15237 			setState(2374);
15238 			match(EQ_);
15239 			setState(2375);
15240 			_la = _input.LA(1);
15241 			if ( !(_la==DETERMINISTIC || _la==RANDOMIZED) ) {
15242 			_errHandler.recoverInline(this);
15243 			}
15244 			else {
15245 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15246 				_errHandler.reportMatch(this);
15247 				consume();
15248 			}
15249 			setState(2376);
15250 			match(COMMA_);
15251 			setState(2377);
15252 			match(ALGORITHM);
15253 			setState(2378);
15254 			match(EQ_);
15255 			setState(2379);
15256 			match(STRING_);
15257 			setState(2380);
15258 			match(RP_);
15259 			}
15260 		}
15261 		catch (RecognitionException re) {
15262 			_localctx.exception = re;
15263 			_errHandler.reportError(this, re);
15264 			_errHandler.recover(this, re);
15265 		}
15266 		finally {
15267 			exitRule();
15268 		}
15269 		return _localctx;
15270 	}
15271 
15272 	public static class ColumnConstraintContext extends ParserRuleContext {
15273 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
15274 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
15275 		}
15276 		public ColumnForeignKeyConstraintContext columnForeignKeyConstraint() {
15277 			return getRuleContext(ColumnForeignKeyConstraintContext.class,0);
15278 		}
15279 		public CheckConstraintContext checkConstraint() {
15280 			return getRuleContext(CheckConstraintContext.class,0);
15281 		}
15282 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
15283 		public ConstraintNameContext constraintName() {
15284 			return getRuleContext(ConstraintNameContext.class,0);
15285 		}
15286 		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
15287 			super(parent, invokingState);
15288 		}
15289 		@Override public int getRuleIndex() { return RULE_columnConstraint; }
15290 		@Override
15291 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15292 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraint(this);
15293 			else return visitor.visitChildren(this);
15294 		}
15295 	}
15296 
15297 	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
15298 		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
15299 		enterRule(_localctx, 318, RULE_columnConstraint);
15300 		int _la;
15301 		try {
15302 			enterOuterAlt(_localctx, 1);
15303 			{
15304 			setState(2384);
15305 			_errHandler.sync(this);
15306 			_la = _input.LA(1);
15307 			if (_la==CONSTRAINT) {
15308 				{
15309 				setState(2382);
15310 				match(CONSTRAINT);
15311 				setState(2383);
15312 				constraintName();
15313 				}
15314 			}
15315 
15316 			setState(2389);
15317 			_errHandler.sync(this);
15318 			switch (_input.LA(1)) {
15319 			case PRIMARY:
15320 			case UNIQUE:
15321 			case KEY:
15322 				{
15323 				setState(2386);
15324 				primaryKeyConstraint();
15325 				}
15326 				break;
15327 			case FOREIGN:
15328 			case REFERENCES:
15329 				{
15330 				setState(2387);
15331 				columnForeignKeyConstraint();
15332 				}
15333 				break;
15334 			case CHECK:
15335 				{
15336 				setState(2388);
15337 				checkConstraint();
15338 				}
15339 				break;
15340 			default:
15341 				throw new NoViableAltException(this);
15342 			}
15343 			}
15344 		}
15345 		catch (RecognitionException re) {
15346 			_localctx.exception = re;
15347 			_errHandler.reportError(this, re);
15348 			_errHandler.recover(this, re);
15349 		}
15350 		finally {
15351 			exitRule();
15352 		}
15353 		return _localctx;
15354 	}
15355 
15356 	public static class ComputedColumnConstraintContext extends ParserRuleContext {
15357 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
15358 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
15359 		}
15360 		public ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() {
15361 			return getRuleContext(ComputedColumnForeignKeyConstraintContext.class,0);
15362 		}
15363 		public CheckConstraintContext checkConstraint() {
15364 			return getRuleContext(CheckConstraintContext.class,0);
15365 		}
15366 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
15367 		public ConstraintNameContext constraintName() {
15368 			return getRuleContext(ConstraintNameContext.class,0);
15369 		}
15370 		public ComputedColumnConstraintContext(ParserRuleContext parent, int invokingState) {
15371 			super(parent, invokingState);
15372 		}
15373 		@Override public int getRuleIndex() { return RULE_computedColumnConstraint; }
15374 		@Override
15375 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15376 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnConstraint(this);
15377 			else return visitor.visitChildren(this);
15378 		}
15379 	}
15380 
15381 	public final ComputedColumnConstraintContext computedColumnConstraint() throws RecognitionException {
15382 		ComputedColumnConstraintContext _localctx = new ComputedColumnConstraintContext(_ctx, getState());
15383 		enterRule(_localctx, 320, RULE_computedColumnConstraint);
15384 		int _la;
15385 		try {
15386 			enterOuterAlt(_localctx, 1);
15387 			{
15388 			setState(2393);
15389 			_errHandler.sync(this);
15390 			_la = _input.LA(1);
15391 			if (_la==CONSTRAINT) {
15392 				{
15393 				setState(2391);
15394 				match(CONSTRAINT);
15395 				setState(2392);
15396 				constraintName();
15397 				}
15398 			}
15399 
15400 			setState(2398);
15401 			_errHandler.sync(this);
15402 			switch (_input.LA(1)) {
15403 			case PRIMARY:
15404 			case UNIQUE:
15405 			case KEY:
15406 				{
15407 				setState(2395);
15408 				primaryKeyConstraint();
15409 				}
15410 				break;
15411 			case TRUNCATE:
15412 			case SCHEMA:
15413 			case COLUMNS:
15414 			case FOREIGN:
15415 			case PRECISION:
15416 			case FUNCTION:
15417 			case TRIGGER:
15418 			case CAST:
15419 			case SUBSTRING:
15420 			case OFF:
15421 			case GROUP:
15422 			case LIMIT:
15423 			case OFFSET:
15424 			case SAVEPOINT:
15425 			case BOOLEAN:
15426 			case ARRAY:
15427 			case DATE:
15428 			case LOCALTIME:
15429 			case LOCALTIMESTAMP:
15430 			case QUARTER:
15431 			case WEEK:
15432 			case DAY:
15433 			case SECOND:
15434 			case MICROSECOND:
15435 			case MAX:
15436 			case MIN:
15437 			case SUM:
15438 			case COUNT:
15439 			case AVG:
15440 			case ENABLE:
15441 			case DISABLE:
15442 			case INSTANCE:
15443 			case DO:
15444 			case DEFINER:
15445 			case SQL:
15446 			case CASCADED:
15447 			case LOCAL:
15448 			case NEXT:
15449 			case NAME:
15450 			case INTEGER:
15451 			case TYPE:
15452 			case TEXT:
15453 			case VIEWS:
15454 			case READ_ONLY:
15455 			case DATABASE:
15456 			case RETURNS:
15457 			case DATEPART:
15458 			case PASSWORD:
15459 			case BINARY:
15460 			case HIDDEN_:
15461 			case MOD:
15462 			case PARTITION:
15463 			case PARTITIONS:
15464 			case TOP:
15465 			case ROW:
15466 			case ROWS:
15467 			case XOR:
15468 			case ALWAYS:
15469 			case ROLE:
15470 			case START:
15471 			case ALGORITHM:
15472 			case AUTO:
15473 			case BLOCKERS:
15474 			case CLUSTERED:
15475 			case NONCLUSTERED:
15476 			case COLUMNSTORE:
15477 			case CONTENT:
15478 			case YEARS:
15479 			case MONTHS:
15480 			case WEEKS:
15481 			case DAYS:
15482 			case MINUTES:
15483 			case DENY:
15484 			case DETERMINISTIC:
15485 			case DISTRIBUTION:
15486 			case DOCUMENT:
15487 			case DURABILITY:
15488 			case ENCRYPTED:
15489 			case FILESTREAM:
15490 			case FILETABLE:
15491 			case FILLFACTOR:
15492 			case FOLLOWING:
15493 			case HASH:
15494 			case HEAP:
15495 			case INBOUND:
15496 			case OUTBOUND:
15497 			case UNBOUNDED:
15498 			case INFINITE:
15499 			case LOGIN:
15500 			case MASKED:
15501 			case MAXDOP:
15502 			case MOVE:
15503 			case NOCHECK:
15504 			case OBJECT:
15505 			case ONLINE:
15506 			case OVER:
15507 			case PAGE:
15508 			case PAUSED:
15509 			case PERIOD:
15510 			case PERSISTED:
15511 			case PRECEDING:
15512 			case RANDOMIZED:
15513 			case RANGE:
15514 			case REBUILD:
15515 			case REPLICATE:
15516 			case REPLICATION:
15517 			case RESUMABLE:
15518 			case ROWGUIDCOL:
15519 			case SAVE:
15520 			case SELF:
15521 			case SPARSE:
15522 			case SWITCH:
15523 			case TRAN:
15524 			case TRANCOUNT:
15525 			case CONTROL:
15526 			case CONCAT:
15527 			case TAKE:
15528 			case OWNERSHIP:
15529 			case DEFINITION:
15530 			case APPLICATION:
15531 			case ASSEMBLY:
15532 			case SYMMETRIC:
15533 			case ASYMMETRIC:
15534 			case SERVER:
15535 			case RECEIVE:
15536 			case CHANGE:
15537 			case TRACE:
15538 			case TRACKING:
15539 			case RESOURCES:
15540 			case SETTINGS:
15541 			case STATE:
15542 			case AVAILABILITY:
15543 			case CREDENTIAL:
15544 			case ENDPOINT:
15545 			case EVENT:
15546 			case NOTIFICATION:
15547 			case LINKED:
15548 			case AUDIT:
15549 			case DDL:
15550 			case XML:
15551 			case IMPERSONATE:
15552 			case SECURABLES:
15553 			case AUTHENTICATE:
15554 			case EXTERNAL:
15555 			case ACCESS:
15556 			case ADMINISTER:
15557 			case BULK:
15558 			case OPERATIONS:
15559 			case UNSAFE:
15560 			case SHUTDOWN:
15561 			case SCOPED:
15562 			case CONFIGURATION:
15563 			case DATASPACE:
15564 			case SERVICE:
15565 			case CERTIFICATE:
15566 			case CONTRACT:
15567 			case ENCRYPTION:
15568 			case MASTER:
15569 			case DATA:
15570 			case SOURCE:
15571 			case FILE:
15572 			case FORMAT:
15573 			case LIBRARY:
15574 			case FULLTEXT:
15575 			case MASK:
15576 			case UNMASK:
15577 			case MESSAGE:
15578 			case REMOTE:
15579 			case BINDING:
15580 			case ROUTE:
15581 			case SECURITY:
15582 			case POLICY:
15583 			case AGGREGATE:
15584 			case QUEUE:
15585 			case RULE:
15586 			case SYNONYM:
15587 			case COLLECTION:
15588 			case SCRIPT:
15589 			case KILL:
15590 			case BACKUP:
15591 			case LOG:
15592 			case SHOWPLAN:
15593 			case SUBSCRIBE:
15594 			case QUERY:
15595 			case NOTIFICATIONS:
15596 			case CHECKPOINT:
15597 			case SEQUENCE:
15598 			case ABORT_AFTER_WAIT:
15599 			case ALLOW_PAGE_LOCKS:
15600 			case ALLOW_ROW_LOCKS:
15601 			case ALL_SPARSE_COLUMNS:
15602 			case BUCKET_COUNT:
15603 			case COLUMNSTORE_ARCHIVE:
15604 			case COLUMN_ENCRYPTION_KEY:
15605 			case COLUMN_SET:
15606 			case COMPRESSION_DELAY:
15607 			case DATABASE_DEAULT:
15608 			case DATA_COMPRESSION:
15609 			case DATA_CONSISTENCY_CHECK:
15610 			case ENCRYPTION_TYPE:
15611 			case SYSTEM_TIME:
15612 			case SYSTEM_VERSIONING:
15613 			case TEXTIMAGE_ON:
15614 			case WAIT_AT_LOW_PRIORITY:
15615 			case STATISTICS_INCREMENTAL:
15616 			case STATISTICS_NORECOMPUTE:
15617 			case ROUND_ROBIN:
15618 			case SCHEMA_AND_DATA:
15619 			case SCHEMA_ONLY:
15620 			case SORT_IN_TEMPDB:
15621 			case IGNORE_DUP_KEY:
15622 			case IMPLICIT_TRANSACTIONS:
15623 			case MAX_DURATION:
15624 			case MEMORY_OPTIMIZED:
15625 			case MIGRATION_STATE:
15626 			case PAD_INDEX:
15627 			case REMOTE_DATA_ARCHIVE:
15628 			case FILESTREAM_ON:
15629 			case FILETABLE_COLLATE_FILENAME:
15630 			case FILETABLE_DIRECTORY:
15631 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
15632 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
15633 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
15634 			case FILTER_PREDICATE:
15635 			case HISTORY_RETENTION_PERIOD:
15636 			case HISTORY_TABLE:
15637 			case LOCK_ESCALATION:
15638 			case DROP_EXISTING:
15639 			case ROW_NUMBER:
15640 			case FIRST:
15641 			case DATETIME2:
15642 			case OUTPUT:
15643 			case INSERTED:
15644 			case DELETED:
15645 			case FILENAME:
15646 			case MAXSIZE:
15647 			case FILEGROWTH:
15648 			case UNLIMITED:
15649 			case KB:
15650 			case MB:
15651 			case GB:
15652 			case TB:
15653 			case MEMORY_OPTIMIZED_DATA:
15654 			case FILEGROUP:
15655 			case NON_TRANSACTED_ACCESS:
15656 			case DB_CHAINING:
15657 			case TRUSTWORTHY:
15658 			case FORWARD_ONLY:
15659 			case KEYSET:
15660 			case FAST_FORWARD:
15661 			case SCROLL_LOCKS:
15662 			case OPTIMISTIC:
15663 			case TYPE_WARNING:
15664 			case SCHEMABINDING:
15665 			case CALLER:
15666 			case OWNER:
15667 			case SNAPSHOT:
15668 			case REPEATABLE:
15669 			case SERIALIZABLE:
15670 			case NATIVE_COMPILATION:
15671 			case VIEW_METADATA:
15672 			case INSTEAD:
15673 			case APPEND:
15674 			case INCREMENT:
15675 			case CACHE:
15676 			case MINVALUE:
15677 			case MAXVALUE:
15678 			case RESTART:
15679 			case LOB_COMPACTION:
15680 			case COMPRESS_ALL_ROW_GROUPS:
15681 			case REORGANIZE:
15682 			case RESUME:
15683 			case PAUSE:
15684 			case ABORT:
15685 			case ACCELERATED_DATABASE_RECOVERY:
15686 			case PERSISTENT_VERSION_STORE_FILEGROUP:
15687 			case IMMEDIATE:
15688 			case NO_WAIT:
15689 			case TARGET_RECOVERY_TIME:
15690 			case SECONDS:
15691 			case HONOR_BROKER_PRIORITY:
15692 			case ERROR_BROKER_CONVERSATIONS:
15693 			case NEW_BROKER:
15694 			case DISABLE_BROKER:
15695 			case ENABLE_BROKER:
15696 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
15697 			case READ_COMMITTED_SNAPSHOT:
15698 			case ALLOW_SNAPSHOT_ISOLATION:
15699 			case RECURSIVE_TRIGGERS:
15700 			case QUOTED_IDENTIFIER:
15701 			case NUMERIC_ROUNDABORT:
15702 			case CONCAT_NULL_YIELDS_NULL:
15703 			case COMPATIBILITY_LEVEL:
15704 			case ARITHABORT:
15705 			case ANSI_WARNINGS:
15706 			case ANSI_PADDING:
15707 			case ANSI_NULLS:
15708 			case ANSI_NULL_DEFAULT:
15709 			case PAGE_VERIFY:
15710 			case CHECKSUM:
15711 			case TORN_PAGE_DETECTION:
15712 			case BULK_LOGGED:
15713 			case RECOVERY:
15714 			case TOTAL_EXECUTION_CPU_TIME_MS:
15715 			case TOTAL_COMPILE_CPU_TIME_MS:
15716 			case STALE_CAPTURE_POLICY_THRESHOLD:
15717 			case EXECUTION_COUNT:
15718 			case QUERY_CAPTURE_POLICY:
15719 			case WAIT_STATS_CAPTURE_MODE:
15720 			case MAX_PLANS_PER_QUERY:
15721 			case QUERY_CAPTURE_MODE:
15722 			case SIZE_BASED_CLEANUP_MODE:
15723 			case INTERVAL_LENGTH_MINUTES:
15724 			case MAX_STORAGE_SIZE_MB:
15725 			case DATA_FLUSH_INTERVAL_SECONDS:
15726 			case CLEANUP_POLICY:
15727 			case CUSTOM:
15728 			case STALE_QUERY_THRESHOLD_DAYS:
15729 			case OPERATION_MODE:
15730 			case QUERY_STORE:
15731 			case CURSOR_DEFAULT:
15732 			case GLOBAL:
15733 			case CURSOR_CLOSE_ON_COMMIT:
15734 			case HOURS:
15735 			case CHANGE_RETENTION:
15736 			case AUTO_CLEANUP:
15737 			case CHANGE_TRACKING:
15738 			case AUTOMATIC_TUNING:
15739 			case FORCE_LAST_GOOD_PLAN:
15740 			case AUTO_UPDATE_STATISTICS_ASYNC:
15741 			case AUTO_UPDATE_STATISTICS:
15742 			case AUTO_SHRINK:
15743 			case AUTO_CREATE_STATISTICS:
15744 			case INCREMENTAL:
15745 			case AUTO_CLOSE:
15746 			case DATA_RETENTION:
15747 			case TEMPORAL_HISTORY_RETENTION:
15748 			case EDITION:
15749 			case MIXED_PAGE_ALLOCATION:
15750 			case DISABLED:
15751 			case ALLOWED:
15752 			case HADR:
15753 			case MULTI_USER:
15754 			case RESTRICTED_USER:
15755 			case SINGLE_USER:
15756 			case OFFLINE:
15757 			case EMERGENCY:
15758 			case SUSPEND:
15759 			case DATE_CORRELATION_OPTIMIZATION:
15760 			case ELASTIC_POOL:
15761 			case SERVICE_OBJECTIVE:
15762 			case DATABASE_NAME:
15763 			case ALLOW_CONNECTIONS:
15764 			case GEO:
15765 			case NAMED:
15766 			case DATEFIRST:
15767 			case BACKUP_STORAGE_REDUNDANCY:
15768 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
15769 			case SECONDARY:
15770 			case FAILOVER:
15771 			case DEFAULT_FULLTEXT_LANGUAGE:
15772 			case DEFAULT_LANGUAGE:
15773 			case INLINE:
15774 			case NESTED_TRIGGERS:
15775 			case TRANSFORM_NOISE_WORDS:
15776 			case TWO_DIGIT_YEAR_CUTOFF:
15777 			case PERSISTENT_LOG_BUFFER:
15778 			case DIRECTORY_NAME:
15779 			case DATEFORMAT:
15780 			case DELAYED_DURABILITY:
15781 			case AUTHORIZATION:
15782 			case TRANSFER:
15783 			case PROVIDER:
15784 			case SEARCH:
15785 			case MEMBER:
15786 			case IDENTIFIER_:
15787 			case DELIMITED_IDENTIFIER_:
15788 				{
15789 				setState(2396);
15790 				computedColumnForeignKeyConstraint();
15791 				}
15792 				break;
15793 			case CHECK:
15794 				{
15795 				setState(2397);
15796 				checkConstraint();
15797 				}
15798 				break;
15799 			default:
15800 				throw new NoViableAltException(this);
15801 			}
15802 			}
15803 		}
15804 		catch (RecognitionException re) {
15805 			_localctx.exception = re;
15806 			_errHandler.reportError(this, re);
15807 			_errHandler.recover(this, re);
15808 		}
15809 		finally {
15810 			exitRule();
15811 		}
15812 		return _localctx;
15813 	}
15814 
15815 	public static class ComputedColumnForeignKeyConstraintContext extends ParserRuleContext {
15816 		public TableNameContext tableName() {
15817 			return getRuleContext(TableNameContext.class,0);
15818 		}
15819 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
15820 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
15821 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15822 		public ColumnNameContext columnName() {
15823 			return getRuleContext(ColumnNameContext.class,0);
15824 		}
15825 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15826 		public List<ComputedColumnForeignKeyOnActionContext> computedColumnForeignKeyOnAction() {
15827 			return getRuleContexts(ComputedColumnForeignKeyOnActionContext.class);
15828 		}
15829 		public ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction(int i) {
15830 			return getRuleContext(ComputedColumnForeignKeyOnActionContext.class,i);
15831 		}
15832 		public ComputedColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
15833 			super(parent, invokingState);
15834 		}
15835 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyConstraint; }
15836 		@Override
15837 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15838 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyConstraint(this);
15839 			else return visitor.visitChildren(this);
15840 		}
15841 	}
15842 
15843 	public final ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() throws RecognitionException {
15844 		ComputedColumnForeignKeyConstraintContext _localctx = new ComputedColumnForeignKeyConstraintContext(_ctx, getState());
15845 		enterRule(_localctx, 322, RULE_computedColumnForeignKeyConstraint);
15846 		int _la;
15847 		try {
15848 			enterOuterAlt(_localctx, 1);
15849 			{
15850 			setState(2402);
15851 			_errHandler.sync(this);
15852 			_la = _input.LA(1);
15853 			if (_la==FOREIGN) {
15854 				{
15855 				setState(2400);
15856 				match(FOREIGN);
15857 				setState(2401);
15858 				match(KEY);
15859 				}
15860 			}
15861 
15862 			setState(2404);
15863 			tableName();
15864 			setState(2409);
15865 			_errHandler.sync(this);
15866 			switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) {
15867 			case 1:
15868 				{
15869 				setState(2405);
15870 				match(LP_);
15871 				setState(2406);
15872 				columnName();
15873 				setState(2407);
15874 				match(RP_);
15875 				}
15876 				break;
15877 			}
15878 			setState(2414);
15879 			_errHandler.sync(this);
15880 			_la = _input.LA(1);
15881 			while (_la==ON || _la==NOT) {
15882 				{
15883 				{
15884 				setState(2411);
15885 				computedColumnForeignKeyOnAction();
15886 				}
15887 				}
15888 				setState(2416);
15889 				_errHandler.sync(this);
15890 				_la = _input.LA(1);
15891 			}
15892 			}
15893 		}
15894 		catch (RecognitionException re) {
15895 			_localctx.exception = re;
15896 			_errHandler.reportError(this, re);
15897 			_errHandler.recover(this, re);
15898 		}
15899 		finally {
15900 			exitRule();
15901 		}
15902 		return _localctx;
15903 	}
15904 
15905 	public static class ComputedColumnForeignKeyOnActionContext extends ParserRuleContext {
15906 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15907 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
15908 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
15909 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
15910 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
15911 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
15912 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
15913 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
15914 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
15915 		public ComputedColumnForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
15916 			super(parent, invokingState);
15917 		}
15918 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyOnAction; }
15919 		@Override
15920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyOnAction(this);
15922 			else return visitor.visitChildren(this);
15923 		}
15924 	}
15925 
15926 	public final ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction() throws RecognitionException {
15927 		ComputedColumnForeignKeyOnActionContext _localctx = new ComputedColumnForeignKeyOnActionContext(_ctx, getState());
15928 		enterRule(_localctx, 324, RULE_computedColumnForeignKeyOnAction);
15929 		try {
15930 			setState(2431);
15931 			_errHandler.sync(this);
15932 			switch ( getInterpreter().adaptivePredict(_input,179,_ctx) ) {
15933 			case 1:
15934 				enterOuterAlt(_localctx, 1);
15935 				{
15936 				setState(2417);
15937 				match(ON);
15938 				setState(2418);
15939 				match(DELETE);
15940 				setState(2422);
15941 				_errHandler.sync(this);
15942 				switch (_input.LA(1)) {
15943 				case NO:
15944 					{
15945 					setState(2419);
15946 					match(NO);
15947 					setState(2420);
15948 					match(ACTION);
15949 					}
15950 					break;
15951 				case CASCADE:
15952 					{
15953 					setState(2421);
15954 					match(CASCADE);
15955 					}
15956 					break;
15957 				default:
15958 					throw new NoViableAltException(this);
15959 				}
15960 				}
15961 				break;
15962 			case 2:
15963 				enterOuterAlt(_localctx, 2);
15964 				{
15965 				setState(2424);
15966 				match(ON);
15967 				setState(2425);
15968 				match(UPDATE);
15969 				setState(2426);
15970 				match(NO);
15971 				setState(2427);
15972 				match(ACTION);
15973 				}
15974 				break;
15975 			case 3:
15976 				enterOuterAlt(_localctx, 3);
15977 				{
15978 				setState(2428);
15979 				match(NOT);
15980 				setState(2429);
15981 				match(FOR);
15982 				setState(2430);
15983 				match(REPLICATION);
15984 				}
15985 				break;
15986 			}
15987 		}
15988 		catch (RecognitionException re) {
15989 			_localctx.exception = re;
15990 			_errHandler.reportError(this, re);
15991 			_errHandler.recover(this, re);
15992 		}
15993 		finally {
15994 			exitRule();
15995 		}
15996 		return _localctx;
15997 	}
15998 
15999 	public static class PrimaryKeyConstraintContext extends ParserRuleContext {
16000 		public PrimaryKeyContext primaryKey() {
16001 			return getRuleContext(PrimaryKeyContext.class,0);
16002 		}
16003 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
16004 		public DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() {
16005 			return getRuleContext(DiskTablePrimaryKeyConstraintOptionContext.class,0);
16006 		}
16007 		public MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() {
16008 			return getRuleContext(MemoryTablePrimaryKeyConstraintOptionContext.class,0);
16009 		}
16010 		public PrimaryKeyConstraintContext(ParserRuleContext parent, int invokingState) {
16011 			super(parent, invokingState);
16012 		}
16013 		@Override public int getRuleIndex() { return RULE_primaryKeyConstraint; }
16014 		@Override
16015 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16016 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyConstraint(this);
16017 			else return visitor.visitChildren(this);
16018 		}
16019 	}
16020 
16021 	public final PrimaryKeyConstraintContext primaryKeyConstraint() throws RecognitionException {
16022 		PrimaryKeyConstraintContext _localctx = new PrimaryKeyConstraintContext(_ctx, getState());
16023 		enterRule(_localctx, 326, RULE_primaryKeyConstraint);
16024 		try {
16025 			enterOuterAlt(_localctx, 1);
16026 			{
16027 			setState(2435);
16028 			_errHandler.sync(this);
16029 			switch (_input.LA(1)) {
16030 			case PRIMARY:
16031 			case KEY:
16032 				{
16033 				setState(2433);
16034 				primaryKey();
16035 				}
16036 				break;
16037 			case UNIQUE:
16038 				{
16039 				setState(2434);
16040 				match(UNIQUE);
16041 				}
16042 				break;
16043 			default:
16044 				throw new NoViableAltException(this);
16045 			}
16046 			setState(2439);
16047 			_errHandler.sync(this);
16048 			switch ( getInterpreter().adaptivePredict(_input,181,_ctx) ) {
16049 			case 1:
16050 				{
16051 				setState(2437);
16052 				diskTablePrimaryKeyConstraintOption();
16053 				}
16054 				break;
16055 			case 2:
16056 				{
16057 				setState(2438);
16058 				memoryTablePrimaryKeyConstraintOption();
16059 				}
16060 				break;
16061 			}
16062 			}
16063 		}
16064 		catch (RecognitionException re) {
16065 			_localctx.exception = re;
16066 			_errHandler.reportError(this, re);
16067 			_errHandler.recover(this, re);
16068 		}
16069 		finally {
16070 			exitRule();
16071 		}
16072 		return _localctx;
16073 	}
16074 
16075 	public static class DiskTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
16076 		public ClusterOptionContext clusterOption() {
16077 			return getRuleContext(ClusterOptionContext.class,0);
16078 		}
16079 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
16080 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
16081 		}
16082 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
16083 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
16084 		}
16085 		public DiskTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
16086 			super(parent, invokingState);
16087 		}
16088 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryKeyConstraintOption; }
16089 		@Override
16090 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16091 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryKeyConstraintOption(this);
16092 			else return visitor.visitChildren(this);
16093 		}
16094 	}
16095 
16096 	public final DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() throws RecognitionException {
16097 		DiskTablePrimaryKeyConstraintOptionContext _localctx = new DiskTablePrimaryKeyConstraintOptionContext(_ctx, getState());
16098 		enterRule(_localctx, 328, RULE_diskTablePrimaryKeyConstraintOption);
16099 		int _la;
16100 		try {
16101 			enterOuterAlt(_localctx, 1);
16102 			{
16103 			setState(2442);
16104 			_errHandler.sync(this);
16105 			_la = _input.LA(1);
16106 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
16107 				{
16108 				setState(2441);
16109 				clusterOption();
16110 				}
16111 			}
16112 
16113 			setState(2445);
16114 			_errHandler.sync(this);
16115 			switch ( getInterpreter().adaptivePredict(_input,183,_ctx) ) {
16116 			case 1:
16117 				{
16118 				setState(2444);
16119 				primaryKeyWithClause();
16120 				}
16121 				break;
16122 			}
16123 			setState(2448);
16124 			_errHandler.sync(this);
16125 			_la = _input.LA(1);
16126 			if (_la==ON) {
16127 				{
16128 				setState(2447);
16129 				primaryKeyOnClause();
16130 				}
16131 			}
16132 
16133 			}
16134 		}
16135 		catch (RecognitionException re) {
16136 			_localctx.exception = re;
16137 			_errHandler.reportError(this, re);
16138 			_errHandler.recover(this, re);
16139 		}
16140 		finally {
16141 			exitRule();
16142 		}
16143 		return _localctx;
16144 	}
16145 
16146 	public static class ClusterOptionContext extends ParserRuleContext {
16147 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
16148 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
16149 		public ClusterOptionContext(ParserRuleContext parent, int invokingState) {
16150 			super(parent, invokingState);
16151 		}
16152 		@Override public int getRuleIndex() { return RULE_clusterOption; }
16153 		@Override
16154 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16155 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClusterOption(this);
16156 			else return visitor.visitChildren(this);
16157 		}
16158 	}
16159 
16160 	public final ClusterOptionContext clusterOption() throws RecognitionException {
16161 		ClusterOptionContext _localctx = new ClusterOptionContext(_ctx, getState());
16162 		enterRule(_localctx, 330, RULE_clusterOption);
16163 		int _la;
16164 		try {
16165 			enterOuterAlt(_localctx, 1);
16166 			{
16167 			setState(2450);
16168 			_la = _input.LA(1);
16169 			if ( !(_la==CLUSTERED || _la==NONCLUSTERED) ) {
16170 			_errHandler.recoverInline(this);
16171 			}
16172 			else {
16173 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16174 				_errHandler.reportMatch(this);
16175 				consume();
16176 			}
16177 			}
16178 		}
16179 		catch (RecognitionException re) {
16180 			_localctx.exception = re;
16181 			_errHandler.reportError(this, re);
16182 			_errHandler.recover(this, re);
16183 		}
16184 		finally {
16185 			exitRule();
16186 		}
16187 		return _localctx;
16188 	}
16189 
16190 	public static class PrimaryKeyWithClauseContext extends ParserRuleContext {
16191 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16192 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
16193 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
16194 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
16195 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16196 		public List<IndexOptionContext> indexOption() {
16197 			return getRuleContexts(IndexOptionContext.class);
16198 		}
16199 		public IndexOptionContext indexOption(int i) {
16200 			return getRuleContext(IndexOptionContext.class,i);
16201 		}
16202 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16203 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16204 		public TerminalNode COMMA_(int i) {
16205 			return getToken(SQLServerStatementParser.COMMA_, i);
16206 		}
16207 		public PrimaryKeyWithClauseContext(ParserRuleContext parent, int invokingState) {
16208 			super(parent, invokingState);
16209 		}
16210 		@Override public int getRuleIndex() { return RULE_primaryKeyWithClause; }
16211 		@Override
16212 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16213 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyWithClause(this);
16214 			else return visitor.visitChildren(this);
16215 		}
16216 	}
16217 
16218 	public final PrimaryKeyWithClauseContext primaryKeyWithClause() throws RecognitionException {
16219 		PrimaryKeyWithClauseContext _localctx = new PrimaryKeyWithClauseContext(_ctx, getState());
16220 		enterRule(_localctx, 332, RULE_primaryKeyWithClause);
16221 		int _la;
16222 		try {
16223 			enterOuterAlt(_localctx, 1);
16224 			{
16225 			setState(2452);
16226 			match(WITH);
16227 			setState(2467);
16228 			_errHandler.sync(this);
16229 			switch (_input.LA(1)) {
16230 			case FILLFACTOR:
16231 				{
16232 				setState(2453);
16233 				match(FILLFACTOR);
16234 				setState(2454);
16235 				match(EQ_);
16236 				setState(2455);
16237 				match(NUMBER_);
16238 				}
16239 				break;
16240 			case LP_:
16241 				{
16242 				setState(2456);
16243 				match(LP_);
16244 				setState(2457);
16245 				indexOption();
16246 				setState(2462);
16247 				_errHandler.sync(this);
16248 				_la = _input.LA(1);
16249 				while (_la==COMMA_) {
16250 					{
16251 					{
16252 					setState(2458);
16253 					match(COMMA_);
16254 					setState(2459);
16255 					indexOption();
16256 					}
16257 					}
16258 					setState(2464);
16259 					_errHandler.sync(this);
16260 					_la = _input.LA(1);
16261 				}
16262 				setState(2465);
16263 				match(RP_);
16264 				}
16265 				break;
16266 			default:
16267 				throw new NoViableAltException(this);
16268 			}
16269 			}
16270 		}
16271 		catch (RecognitionException re) {
16272 			_localctx.exception = re;
16273 			_errHandler.reportError(this, re);
16274 			_errHandler.recover(this, re);
16275 		}
16276 		finally {
16277 			exitRule();
16278 		}
16279 		return _localctx;
16280 	}
16281 
16282 	public static class PrimaryKeyOnClauseContext extends ParserRuleContext {
16283 		public OnSchemaColumnContext onSchemaColumn() {
16284 			return getRuleContext(OnSchemaColumnContext.class,0);
16285 		}
16286 		public OnFileGroupContext onFileGroup() {
16287 			return getRuleContext(OnFileGroupContext.class,0);
16288 		}
16289 		public OnStringContext onString() {
16290 			return getRuleContext(OnStringContext.class,0);
16291 		}
16292 		public PrimaryKeyOnClauseContext(ParserRuleContext parent, int invokingState) {
16293 			super(parent, invokingState);
16294 		}
16295 		@Override public int getRuleIndex() { return RULE_primaryKeyOnClause; }
16296 		@Override
16297 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16298 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyOnClause(this);
16299 			else return visitor.visitChildren(this);
16300 		}
16301 	}
16302 
16303 	public final PrimaryKeyOnClauseContext primaryKeyOnClause() throws RecognitionException {
16304 		PrimaryKeyOnClauseContext _localctx = new PrimaryKeyOnClauseContext(_ctx, getState());
16305 		enterRule(_localctx, 334, RULE_primaryKeyOnClause);
16306 		try {
16307 			setState(2472);
16308 			_errHandler.sync(this);
16309 			switch ( getInterpreter().adaptivePredict(_input,187,_ctx) ) {
16310 			case 1:
16311 				enterOuterAlt(_localctx, 1);
16312 				{
16313 				setState(2469);
16314 				onSchemaColumn();
16315 				}
16316 				break;
16317 			case 2:
16318 				enterOuterAlt(_localctx, 2);
16319 				{
16320 				setState(2470);
16321 				onFileGroup();
16322 				}
16323 				break;
16324 			case 3:
16325 				enterOuterAlt(_localctx, 3);
16326 				{
16327 				setState(2471);
16328 				onString();
16329 				}
16330 				break;
16331 			}
16332 		}
16333 		catch (RecognitionException re) {
16334 			_localctx.exception = re;
16335 			_errHandler.reportError(this, re);
16336 			_errHandler.recover(this, re);
16337 		}
16338 		finally {
16339 			exitRule();
16340 		}
16341 		return _localctx;
16342 	}
16343 
16344 	public static class OnSchemaColumnContext extends ParserRuleContext {
16345 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16346 		public SchemaNameContext schemaName() {
16347 			return getRuleContext(SchemaNameContext.class,0);
16348 		}
16349 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16350 		public ColumnNameContext columnName() {
16351 			return getRuleContext(ColumnNameContext.class,0);
16352 		}
16353 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16354 		public OnSchemaColumnContext(ParserRuleContext parent, int invokingState) {
16355 			super(parent, invokingState);
16356 		}
16357 		@Override public int getRuleIndex() { return RULE_onSchemaColumn; }
16358 		@Override
16359 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16360 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnSchemaColumn(this);
16361 			else return visitor.visitChildren(this);
16362 		}
16363 	}
16364 
16365 	public final OnSchemaColumnContext onSchemaColumn() throws RecognitionException {
16366 		OnSchemaColumnContext _localctx = new OnSchemaColumnContext(_ctx, getState());
16367 		enterRule(_localctx, 336, RULE_onSchemaColumn);
16368 		try {
16369 			enterOuterAlt(_localctx, 1);
16370 			{
16371 			setState(2474);
16372 			match(ON);
16373 			setState(2475);
16374 			schemaName();
16375 			setState(2476);
16376 			match(LP_);
16377 			setState(2477);
16378 			columnName();
16379 			setState(2478);
16380 			match(RP_);
16381 			}
16382 		}
16383 		catch (RecognitionException re) {
16384 			_localctx.exception = re;
16385 			_errHandler.reportError(this, re);
16386 			_errHandler.recover(this, re);
16387 		}
16388 		finally {
16389 			exitRule();
16390 		}
16391 		return _localctx;
16392 	}
16393 
16394 	public static class OnFileGroupContext extends ParserRuleContext {
16395 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16396 		public IgnoredIdentifierContext ignoredIdentifier() {
16397 			return getRuleContext(IgnoredIdentifierContext.class,0);
16398 		}
16399 		public OnFileGroupContext(ParserRuleContext parent, int invokingState) {
16400 			super(parent, invokingState);
16401 		}
16402 		@Override public int getRuleIndex() { return RULE_onFileGroup; }
16403 		@Override
16404 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16405 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnFileGroup(this);
16406 			else return visitor.visitChildren(this);
16407 		}
16408 	}
16409 
16410 	public final OnFileGroupContext onFileGroup() throws RecognitionException {
16411 		OnFileGroupContext _localctx = new OnFileGroupContext(_ctx, getState());
16412 		enterRule(_localctx, 338, RULE_onFileGroup);
16413 		try {
16414 			enterOuterAlt(_localctx, 1);
16415 			{
16416 			setState(2480);
16417 			match(ON);
16418 			setState(2481);
16419 			ignoredIdentifier();
16420 			}
16421 		}
16422 		catch (RecognitionException re) {
16423 			_localctx.exception = re;
16424 			_errHandler.reportError(this, re);
16425 			_errHandler.recover(this, re);
16426 		}
16427 		finally {
16428 			exitRule();
16429 		}
16430 		return _localctx;
16431 	}
16432 
16433 	public static class OnStringContext extends ParserRuleContext {
16434 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16435 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16436 		public OnStringContext(ParserRuleContext parent, int invokingState) {
16437 			super(parent, invokingState);
16438 		}
16439 		@Override public int getRuleIndex() { return RULE_onString; }
16440 		@Override
16441 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16442 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnString(this);
16443 			else return visitor.visitChildren(this);
16444 		}
16445 	}
16446 
16447 	public final OnStringContext onString() throws RecognitionException {
16448 		OnStringContext _localctx = new OnStringContext(_ctx, getState());
16449 		enterRule(_localctx, 340, RULE_onString);
16450 		try {
16451 			enterOuterAlt(_localctx, 1);
16452 			{
16453 			setState(2483);
16454 			match(ON);
16455 			setState(2484);
16456 			match(STRING_);
16457 			}
16458 		}
16459 		catch (RecognitionException re) {
16460 			_localctx.exception = re;
16461 			_errHandler.reportError(this, re);
16462 			_errHandler.recover(this, re);
16463 		}
16464 		finally {
16465 			exitRule();
16466 		}
16467 		return _localctx;
16468 	}
16469 
16470 	public static class MemoryTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
16471 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
16472 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
16473 		public WithBucketContext withBucket() {
16474 			return getRuleContext(WithBucketContext.class,0);
16475 		}
16476 		public MemoryTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
16477 			super(parent, invokingState);
16478 		}
16479 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryKeyConstraintOption; }
16480 		@Override
16481 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16482 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryKeyConstraintOption(this);
16483 			else return visitor.visitChildren(this);
16484 		}
16485 	}
16486 
16487 	public final MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() throws RecognitionException {
16488 		MemoryTablePrimaryKeyConstraintOptionContext _localctx = new MemoryTablePrimaryKeyConstraintOptionContext(_ctx, getState());
16489 		enterRule(_localctx, 342, RULE_memoryTablePrimaryKeyConstraintOption);
16490 		try {
16491 			setState(2492);
16492 			_errHandler.sync(this);
16493 			switch ( getInterpreter().adaptivePredict(_input,189,_ctx) ) {
16494 			case 1:
16495 				enterOuterAlt(_localctx, 1);
16496 				{
16497 				setState(2486);
16498 				match(NONCLUSTERED);
16499 				}
16500 				break;
16501 			case 2:
16502 				enterOuterAlt(_localctx, 2);
16503 				{
16504 				setState(2487);
16505 				match(NONCLUSTERED);
16506 				setState(2488);
16507 				match(HASH);
16508 				setState(2490);
16509 				_errHandler.sync(this);
16510 				switch ( getInterpreter().adaptivePredict(_input,188,_ctx) ) {
16511 				case 1:
16512 					{
16513 					setState(2489);
16514 					withBucket();
16515 					}
16516 					break;
16517 				}
16518 				}
16519 				break;
16520 			}
16521 		}
16522 		catch (RecognitionException re) {
16523 			_localctx.exception = re;
16524 			_errHandler.reportError(this, re);
16525 			_errHandler.recover(this, re);
16526 		}
16527 		finally {
16528 			exitRule();
16529 		}
16530 		return _localctx;
16531 	}
16532 
16533 	public static class WithBucketContext extends ParserRuleContext {
16534 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16535 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16536 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
16537 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
16538 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
16539 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16540 		public WithBucketContext(ParserRuleContext parent, int invokingState) {
16541 			super(parent, invokingState);
16542 		}
16543 		@Override public int getRuleIndex() { return RULE_withBucket; }
16544 		@Override
16545 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16546 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithBucket(this);
16547 			else return visitor.visitChildren(this);
16548 		}
16549 	}
16550 
16551 	public final WithBucketContext withBucket() throws RecognitionException {
16552 		WithBucketContext _localctx = new WithBucketContext(_ctx, getState());
16553 		enterRule(_localctx, 344, RULE_withBucket);
16554 		try {
16555 			enterOuterAlt(_localctx, 1);
16556 			{
16557 			setState(2494);
16558 			match(WITH);
16559 			setState(2495);
16560 			match(LP_);
16561 			setState(2496);
16562 			match(BUCKET_COUNT);
16563 			setState(2497);
16564 			match(EQ_);
16565 			setState(2498);
16566 			match(NUMBER_);
16567 			setState(2499);
16568 			match(RP_);
16569 			}
16570 		}
16571 		catch (RecognitionException re) {
16572 			_localctx.exception = re;
16573 			_errHandler.reportError(this, re);
16574 			_errHandler.recover(this, re);
16575 		}
16576 		finally {
16577 			exitRule();
16578 		}
16579 		return _localctx;
16580 	}
16581 
16582 	public static class ColumnForeignKeyConstraintContext extends ParserRuleContext {
16583 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
16584 		public TableNameContext tableName() {
16585 			return getRuleContext(TableNameContext.class,0);
16586 		}
16587 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
16588 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
16589 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16590 		public ColumnNameContext columnName() {
16591 			return getRuleContext(ColumnNameContext.class,0);
16592 		}
16593 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16594 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
16595 			return getRuleContexts(ForeignKeyOnActionContext.class);
16596 		}
16597 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
16598 			return getRuleContext(ForeignKeyOnActionContext.class,i);
16599 		}
16600 		public ColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
16601 			super(parent, invokingState);
16602 		}
16603 		@Override public int getRuleIndex() { return RULE_columnForeignKeyConstraint; }
16604 		@Override
16605 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16606 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnForeignKeyConstraint(this);
16607 			else return visitor.visitChildren(this);
16608 		}
16609 	}
16610 
16611 	public final ColumnForeignKeyConstraintContext columnForeignKeyConstraint() throws RecognitionException {
16612 		ColumnForeignKeyConstraintContext _localctx = new ColumnForeignKeyConstraintContext(_ctx, getState());
16613 		enterRule(_localctx, 346, RULE_columnForeignKeyConstraint);
16614 		int _la;
16615 		try {
16616 			int _alt;
16617 			enterOuterAlt(_localctx, 1);
16618 			{
16619 			setState(2503);
16620 			_errHandler.sync(this);
16621 			_la = _input.LA(1);
16622 			if (_la==FOREIGN) {
16623 				{
16624 				setState(2501);
16625 				match(FOREIGN);
16626 				setState(2502);
16627 				match(KEY);
16628 				}
16629 			}
16630 
16631 			setState(2505);
16632 			match(REFERENCES);
16633 			setState(2506);
16634 			tableName();
16635 			setState(2511);
16636 			_errHandler.sync(this);
16637 			switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
16638 			case 1:
16639 				{
16640 				setState(2507);
16641 				match(LP_);
16642 				setState(2508);
16643 				columnName();
16644 				setState(2509);
16645 				match(RP_);
16646 				}
16647 				break;
16648 			}
16649 			setState(2516);
16650 			_errHandler.sync(this);
16651 			_alt = getInterpreter().adaptivePredict(_input,192,_ctx);
16652 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16653 				if ( _alt==1 ) {
16654 					{
16655 					{
16656 					setState(2513);
16657 					foreignKeyOnAction();
16658 					}
16659 					} 
16660 				}
16661 				setState(2518);
16662 				_errHandler.sync(this);
16663 				_alt = getInterpreter().adaptivePredict(_input,192,_ctx);
16664 			}
16665 			}
16666 		}
16667 		catch (RecognitionException re) {
16668 			_localctx.exception = re;
16669 			_errHandler.reportError(this, re);
16670 			_errHandler.recover(this, re);
16671 		}
16672 		finally {
16673 			exitRule();
16674 		}
16675 		return _localctx;
16676 	}
16677 
16678 	public static class ForeignKeyOnActionContext extends ParserRuleContext {
16679 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16680 		public ForeignKeyOnContext foreignKeyOn() {
16681 			return getRuleContext(ForeignKeyOnContext.class,0);
16682 		}
16683 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
16684 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
16685 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16686 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16687 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16688 		public ForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
16689 			super(parent, invokingState);
16690 		}
16691 		@Override public int getRuleIndex() { return RULE_foreignKeyOnAction; }
16692 		@Override
16693 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16694 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOnAction(this);
16695 			else return visitor.visitChildren(this);
16696 		}
16697 	}
16698 
16699 	public final ForeignKeyOnActionContext foreignKeyOnAction() throws RecognitionException {
16700 		ForeignKeyOnActionContext _localctx = new ForeignKeyOnActionContext(_ctx, getState());
16701 		enterRule(_localctx, 348, RULE_foreignKeyOnAction);
16702 		int _la;
16703 		try {
16704 			setState(2525);
16705 			_errHandler.sync(this);
16706 			switch (_input.LA(1)) {
16707 			case ON:
16708 				enterOuterAlt(_localctx, 1);
16709 				{
16710 				setState(2519);
16711 				match(ON);
16712 				setState(2520);
16713 				_la = _input.LA(1);
16714 				if ( !(_la==UPDATE || _la==DELETE) ) {
16715 				_errHandler.recoverInline(this);
16716 				}
16717 				else {
16718 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16719 					_errHandler.reportMatch(this);
16720 					consume();
16721 				}
16722 				setState(2521);
16723 				foreignKeyOn();
16724 				}
16725 				break;
16726 			case NOT:
16727 				enterOuterAlt(_localctx, 2);
16728 				{
16729 				setState(2522);
16730 				match(NOT);
16731 				setState(2523);
16732 				match(FOR);
16733 				setState(2524);
16734 				match(REPLICATION);
16735 				}
16736 				break;
16737 			default:
16738 				throw new NoViableAltException(this);
16739 			}
16740 		}
16741 		catch (RecognitionException re) {
16742 			_localctx.exception = re;
16743 			_errHandler.reportError(this, re);
16744 			_errHandler.recover(this, re);
16745 		}
16746 		finally {
16747 			exitRule();
16748 		}
16749 		return _localctx;
16750 	}
16751 
16752 	public static class ForeignKeyOnContext extends ParserRuleContext {
16753 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
16754 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
16755 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
16756 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
16757 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
16758 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
16759 		public ForeignKeyOnContext(ParserRuleContext parent, int invokingState) {
16760 			super(parent, invokingState);
16761 		}
16762 		@Override public int getRuleIndex() { return RULE_foreignKeyOn; }
16763 		@Override
16764 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16765 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOn(this);
16766 			else return visitor.visitChildren(this);
16767 		}
16768 	}
16769 
16770 	public final ForeignKeyOnContext foreignKeyOn() throws RecognitionException {
16771 		ForeignKeyOnContext _localctx = new ForeignKeyOnContext(_ctx, getState());
16772 		enterRule(_localctx, 350, RULE_foreignKeyOn);
16773 		int _la;
16774 		try {
16775 			setState(2532);
16776 			_errHandler.sync(this);
16777 			switch (_input.LA(1)) {
16778 			case NO:
16779 				enterOuterAlt(_localctx, 1);
16780 				{
16781 				setState(2527);
16782 				match(NO);
16783 				setState(2528);
16784 				match(ACTION);
16785 				}
16786 				break;
16787 			case CASCADE:
16788 				enterOuterAlt(_localctx, 2);
16789 				{
16790 				setState(2529);
16791 				match(CASCADE);
16792 				}
16793 				break;
16794 			case SET:
16795 				enterOuterAlt(_localctx, 3);
16796 				{
16797 				setState(2530);
16798 				match(SET);
16799 				setState(2531);
16800 				_la = _input.LA(1);
16801 				if ( !(_la==NULL || _la==DEFAULT) ) {
16802 				_errHandler.recoverInline(this);
16803 				}
16804 				else {
16805 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16806 					_errHandler.reportMatch(this);
16807 					consume();
16808 				}
16809 				}
16810 				break;
16811 			default:
16812 				throw new NoViableAltException(this);
16813 			}
16814 		}
16815 		catch (RecognitionException re) {
16816 			_localctx.exception = re;
16817 			_errHandler.reportError(this, re);
16818 			_errHandler.recover(this, re);
16819 		}
16820 		finally {
16821 			exitRule();
16822 		}
16823 		return _localctx;
16824 	}
16825 
16826 	public static class CheckConstraintContext extends ParserRuleContext {
16827 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
16828 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16829 		public ExprContext expr() {
16830 			return getRuleContext(ExprContext.class,0);
16831 		}
16832 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16833 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16834 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16835 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16836 		public CheckConstraintContext(ParserRuleContext parent, int invokingState) {
16837 			super(parent, invokingState);
16838 		}
16839 		@Override public int getRuleIndex() { return RULE_checkConstraint; }
16840 		@Override
16841 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16842 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCheckConstraint(this);
16843 			else return visitor.visitChildren(this);
16844 		}
16845 	}
16846 
16847 	public final CheckConstraintContext checkConstraint() throws RecognitionException {
16848 		CheckConstraintContext _localctx = new CheckConstraintContext(_ctx, getState());
16849 		enterRule(_localctx, 352, RULE_checkConstraint);
16850 		int _la;
16851 		try {
16852 			enterOuterAlt(_localctx, 1);
16853 			{
16854 			setState(2534);
16855 			match(CHECK);
16856 			setState(2538);
16857 			_errHandler.sync(this);
16858 			_la = _input.LA(1);
16859 			if (_la==NOT) {
16860 				{
16861 				setState(2535);
16862 				match(NOT);
16863 				setState(2536);
16864 				match(FOR);
16865 				setState(2537);
16866 				match(REPLICATION);
16867 				}
16868 			}
16869 
16870 			setState(2540);
16871 			match(LP_);
16872 			setState(2541);
16873 			expr(0);
16874 			setState(2542);
16875 			match(RP_);
16876 			}
16877 		}
16878 		catch (RecognitionException re) {
16879 			_localctx.exception = re;
16880 			_errHandler.reportError(this, re);
16881 			_errHandler.recover(this, re);
16882 		}
16883 		finally {
16884 			exitRule();
16885 		}
16886 		return _localctx;
16887 	}
16888 
16889 	public static class ColumnIndexContext extends ParserRuleContext {
16890 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
16891 		public IndexNameContext indexName() {
16892 			return getRuleContext(IndexNameContext.class,0);
16893 		}
16894 		public ClusterOptionContext clusterOption() {
16895 			return getRuleContext(ClusterOptionContext.class,0);
16896 		}
16897 		public WithIndexOptionContext withIndexOption() {
16898 			return getRuleContext(WithIndexOptionContext.class,0);
16899 		}
16900 		public IndexOnClauseContext indexOnClause() {
16901 			return getRuleContext(IndexOnClauseContext.class,0);
16902 		}
16903 		public FileStreamOnContext fileStreamOn() {
16904 			return getRuleContext(FileStreamOnContext.class,0);
16905 		}
16906 		public ColumnIndexContext(ParserRuleContext parent, int invokingState) {
16907 			super(parent, invokingState);
16908 		}
16909 		@Override public int getRuleIndex() { return RULE_columnIndex; }
16910 		@Override
16911 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16912 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnIndex(this);
16913 			else return visitor.visitChildren(this);
16914 		}
16915 	}
16916 
16917 	public final ColumnIndexContext columnIndex() throws RecognitionException {
16918 		ColumnIndexContext _localctx = new ColumnIndexContext(_ctx, getState());
16919 		enterRule(_localctx, 354, RULE_columnIndex);
16920 		int _la;
16921 		try {
16922 			enterOuterAlt(_localctx, 1);
16923 			{
16924 			setState(2544);
16925 			match(INDEX);
16926 			setState(2545);
16927 			indexName();
16928 			setState(2547);
16929 			_errHandler.sync(this);
16930 			_la = _input.LA(1);
16931 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
16932 				{
16933 				setState(2546);
16934 				clusterOption();
16935 				}
16936 			}
16937 
16938 			setState(2550);
16939 			_errHandler.sync(this);
16940 			switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) {
16941 			case 1:
16942 				{
16943 				setState(2549);
16944 				withIndexOption();
16945 				}
16946 				break;
16947 			}
16948 			setState(2553);
16949 			_errHandler.sync(this);
16950 			_la = _input.LA(1);
16951 			if (_la==ON) {
16952 				{
16953 				setState(2552);
16954 				indexOnClause();
16955 				}
16956 			}
16957 
16958 			setState(2556);
16959 			_errHandler.sync(this);
16960 			_la = _input.LA(1);
16961 			if (_la==FILESTREAM_ON) {
16962 				{
16963 				setState(2555);
16964 				fileStreamOn();
16965 				}
16966 			}
16967 
16968 			}
16969 		}
16970 		catch (RecognitionException re) {
16971 			_localctx.exception = re;
16972 			_errHandler.reportError(this, re);
16973 			_errHandler.recover(this, re);
16974 		}
16975 		finally {
16976 			exitRule();
16977 		}
16978 		return _localctx;
16979 	}
16980 
16981 	public static class WithIndexOptionContext extends ParserRuleContext {
16982 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16983 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16984 		public List<IndexOptionContext> indexOption() {
16985 			return getRuleContexts(IndexOptionContext.class);
16986 		}
16987 		public IndexOptionContext indexOption(int i) {
16988 			return getRuleContext(IndexOptionContext.class,i);
16989 		}
16990 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16991 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16992 		public TerminalNode COMMA_(int i) {
16993 			return getToken(SQLServerStatementParser.COMMA_, i);
16994 		}
16995 		public WithIndexOptionContext(ParserRuleContext parent, int invokingState) {
16996 			super(parent, invokingState);
16997 		}
16998 		@Override public int getRuleIndex() { return RULE_withIndexOption; }
16999 		@Override
17000 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17001 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithIndexOption(this);
17002 			else return visitor.visitChildren(this);
17003 		}
17004 	}
17005 
17006 	public final WithIndexOptionContext withIndexOption() throws RecognitionException {
17007 		WithIndexOptionContext _localctx = new WithIndexOptionContext(_ctx, getState());
17008 		enterRule(_localctx, 356, RULE_withIndexOption);
17009 		int _la;
17010 		try {
17011 			enterOuterAlt(_localctx, 1);
17012 			{
17013 			setState(2558);
17014 			match(WITH);
17015 			setState(2559);
17016 			match(LP_);
17017 			setState(2560);
17018 			indexOption();
17019 			setState(2565);
17020 			_errHandler.sync(this);
17021 			_la = _input.LA(1);
17022 			while (_la==COMMA_) {
17023 				{
17024 				{
17025 				setState(2561);
17026 				match(COMMA_);
17027 				setState(2562);
17028 				indexOption();
17029 				}
17030 				}
17031 				setState(2567);
17032 				_errHandler.sync(this);
17033 				_la = _input.LA(1);
17034 			}
17035 			setState(2568);
17036 			match(RP_);
17037 			}
17038 		}
17039 		catch (RecognitionException re) {
17040 			_localctx.exception = re;
17041 			_errHandler.reportError(this, re);
17042 			_errHandler.recover(this, re);
17043 		}
17044 		finally {
17045 			exitRule();
17046 		}
17047 		return _localctx;
17048 	}
17049 
17050 	public static class IndexOnClauseContext extends ParserRuleContext {
17051 		public OnSchemaColumnContext onSchemaColumn() {
17052 			return getRuleContext(OnSchemaColumnContext.class,0);
17053 		}
17054 		public OnFileGroupContext onFileGroup() {
17055 			return getRuleContext(OnFileGroupContext.class,0);
17056 		}
17057 		public OnDefaultContext onDefault() {
17058 			return getRuleContext(OnDefaultContext.class,0);
17059 		}
17060 		public IndexOnClauseContext(ParserRuleContext parent, int invokingState) {
17061 			super(parent, invokingState);
17062 		}
17063 		@Override public int getRuleIndex() { return RULE_indexOnClause; }
17064 		@Override
17065 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17066 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOnClause(this);
17067 			else return visitor.visitChildren(this);
17068 		}
17069 	}
17070 
17071 	public final IndexOnClauseContext indexOnClause() throws RecognitionException {
17072 		IndexOnClauseContext _localctx = new IndexOnClauseContext(_ctx, getState());
17073 		enterRule(_localctx, 358, RULE_indexOnClause);
17074 		try {
17075 			setState(2573);
17076 			_errHandler.sync(this);
17077 			switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) {
17078 			case 1:
17079 				enterOuterAlt(_localctx, 1);
17080 				{
17081 				setState(2570);
17082 				onSchemaColumn();
17083 				}
17084 				break;
17085 			case 2:
17086 				enterOuterAlt(_localctx, 2);
17087 				{
17088 				setState(2571);
17089 				onFileGroup();
17090 				}
17091 				break;
17092 			case 3:
17093 				enterOuterAlt(_localctx, 3);
17094 				{
17095 				setState(2572);
17096 				onDefault();
17097 				}
17098 				break;
17099 			}
17100 		}
17101 		catch (RecognitionException re) {
17102 			_localctx.exception = re;
17103 			_errHandler.reportError(this, re);
17104 			_errHandler.recover(this, re);
17105 		}
17106 		finally {
17107 			exitRule();
17108 		}
17109 		return _localctx;
17110 	}
17111 
17112 	public static class OnDefaultContext extends ParserRuleContext {
17113 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17114 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
17115 		public OnDefaultContext(ParserRuleContext parent, int invokingState) {
17116 			super(parent, invokingState);
17117 		}
17118 		@Override public int getRuleIndex() { return RULE_onDefault; }
17119 		@Override
17120 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17121 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnDefault(this);
17122 			else return visitor.visitChildren(this);
17123 		}
17124 	}
17125 
17126 	public final OnDefaultContext onDefault() throws RecognitionException {
17127 		OnDefaultContext _localctx = new OnDefaultContext(_ctx, getState());
17128 		enterRule(_localctx, 360, RULE_onDefault);
17129 		try {
17130 			enterOuterAlt(_localctx, 1);
17131 			{
17132 			setState(2575);
17133 			match(ON);
17134 			setState(2576);
17135 			match(DEFAULT);
17136 			}
17137 		}
17138 		catch (RecognitionException re) {
17139 			_localctx.exception = re;
17140 			_errHandler.reportError(this, re);
17141 			_errHandler.recover(this, re);
17142 		}
17143 		finally {
17144 			exitRule();
17145 		}
17146 		return _localctx;
17147 	}
17148 
17149 	public static class FileStreamOnContext extends ParserRuleContext {
17150 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
17151 		public IgnoredIdentifierContext ignoredIdentifier() {
17152 			return getRuleContext(IgnoredIdentifierContext.class,0);
17153 		}
17154 		public SchemaNameContext schemaName() {
17155 			return getRuleContext(SchemaNameContext.class,0);
17156 		}
17157 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
17158 		public FileStreamOnContext(ParserRuleContext parent, int invokingState) {
17159 			super(parent, invokingState);
17160 		}
17161 		@Override public int getRuleIndex() { return RULE_fileStreamOn; }
17162 		@Override
17163 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17164 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOn(this);
17165 			else return visitor.visitChildren(this);
17166 		}
17167 	}
17168 
17169 	public final FileStreamOnContext fileStreamOn() throws RecognitionException {
17170 		FileStreamOnContext _localctx = new FileStreamOnContext(_ctx, getState());
17171 		enterRule(_localctx, 362, RULE_fileStreamOn);
17172 		try {
17173 			enterOuterAlt(_localctx, 1);
17174 			{
17175 			setState(2578);
17176 			match(FILESTREAM_ON);
17177 			setState(2582);
17178 			_errHandler.sync(this);
17179 			switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) {
17180 			case 1:
17181 				{
17182 				setState(2579);
17183 				ignoredIdentifier();
17184 				}
17185 				break;
17186 			case 2:
17187 				{
17188 				setState(2580);
17189 				schemaName();
17190 				}
17191 				break;
17192 			case 3:
17193 				{
17194 				setState(2581);
17195 				match(STRING_);
17196 				}
17197 				break;
17198 			}
17199 			}
17200 		}
17201 		catch (RecognitionException re) {
17202 			_localctx.exception = re;
17203 			_errHandler.reportError(this, re);
17204 			_errHandler.recover(this, re);
17205 		}
17206 		finally {
17207 			exitRule();
17208 		}
17209 		return _localctx;
17210 	}
17211 
17212 	public static class ColumnConstraintsContext extends ParserRuleContext {
17213 		public List<ColumnConstraintContext> columnConstraint() {
17214 			return getRuleContexts(ColumnConstraintContext.class);
17215 		}
17216 		public ColumnConstraintContext columnConstraint(int i) {
17217 			return getRuleContext(ColumnConstraintContext.class,i);
17218 		}
17219 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17220 		public TerminalNode COMMA_(int i) {
17221 			return getToken(SQLServerStatementParser.COMMA_, i);
17222 		}
17223 		public ColumnConstraintsContext(ParserRuleContext parent, int invokingState) {
17224 			super(parent, invokingState);
17225 		}
17226 		@Override public int getRuleIndex() { return RULE_columnConstraints; }
17227 		@Override
17228 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17229 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraints(this);
17230 			else return visitor.visitChildren(this);
17231 		}
17232 	}
17233 
17234 	public final ColumnConstraintsContext columnConstraints() throws RecognitionException {
17235 		ColumnConstraintsContext _localctx = new ColumnConstraintsContext(_ctx, getState());
17236 		enterRule(_localctx, 364, RULE_columnConstraints);
17237 		try {
17238 			int _alt;
17239 			enterOuterAlt(_localctx, 1);
17240 			{
17241 			setState(2592);
17242 			_errHandler.sync(this);
17243 			switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) {
17244 			case 1:
17245 				{
17246 				setState(2584);
17247 				columnConstraint();
17248 				setState(2589);
17249 				_errHandler.sync(this);
17250 				_alt = getInterpreter().adaptivePredict(_input,203,_ctx);
17251 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
17252 					if ( _alt==1 ) {
17253 						{
17254 						{
17255 						setState(2585);
17256 						match(COMMA_);
17257 						setState(2586);
17258 						columnConstraint();
17259 						}
17260 						} 
17261 					}
17262 					setState(2591);
17263 					_errHandler.sync(this);
17264 					_alt = getInterpreter().adaptivePredict(_input,203,_ctx);
17265 				}
17266 				}
17267 				break;
17268 			}
17269 			}
17270 		}
17271 		catch (RecognitionException re) {
17272 			_localctx.exception = re;
17273 			_errHandler.reportError(this, re);
17274 			_errHandler.recover(this, re);
17275 		}
17276 		finally {
17277 			exitRule();
17278 		}
17279 		return _localctx;
17280 	}
17281 
17282 	public static class ComputedColumnDefinitionContext extends ParserRuleContext {
17283 		public ColumnNameContext columnName() {
17284 			return getRuleContext(ColumnNameContext.class,0);
17285 		}
17286 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
17287 		public ExprContext expr() {
17288 			return getRuleContext(ExprContext.class,0);
17289 		}
17290 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
17291 		public ComputedColumnConstraintContext computedColumnConstraint() {
17292 			return getRuleContext(ComputedColumnConstraintContext.class,0);
17293 		}
17294 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17295 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
17296 		public ComputedColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
17297 			super(parent, invokingState);
17298 		}
17299 		@Override public int getRuleIndex() { return RULE_computedColumnDefinition; }
17300 		@Override
17301 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17302 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnDefinition(this);
17303 			else return visitor.visitChildren(this);
17304 		}
17305 	}
17306 
17307 	public final ComputedColumnDefinitionContext computedColumnDefinition() throws RecognitionException {
17308 		ComputedColumnDefinitionContext _localctx = new ComputedColumnDefinitionContext(_ctx, getState());
17309 		enterRule(_localctx, 366, RULE_computedColumnDefinition);
17310 		int _la;
17311 		try {
17312 			enterOuterAlt(_localctx, 1);
17313 			{
17314 			setState(2594);
17315 			columnName();
17316 			setState(2595);
17317 			match(AS);
17318 			setState(2596);
17319 			expr(0);
17320 			setState(2602);
17321 			_errHandler.sync(this);
17322 			switch ( getInterpreter().adaptivePredict(_input,206,_ctx) ) {
17323 			case 1:
17324 				{
17325 				setState(2597);
17326 				match(PERSISTED);
17327 				setState(2600);
17328 				_errHandler.sync(this);
17329 				_la = _input.LA(1);
17330 				if (_la==NOT) {
17331 					{
17332 					setState(2598);
17333 					match(NOT);
17334 					setState(2599);
17335 					match(NULL);
17336 					}
17337 				}
17338 
17339 				}
17340 				break;
17341 			}
17342 			setState(2605);
17343 			_errHandler.sync(this);
17344 			switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) {
17345 			case 1:
17346 				{
17347 				setState(2604);
17348 				computedColumnConstraint();
17349 				}
17350 				break;
17351 			}
17352 			}
17353 		}
17354 		catch (RecognitionException re) {
17355 			_localctx.exception = re;
17356 			_errHandler.reportError(this, re);
17357 			_errHandler.recover(this, re);
17358 		}
17359 		finally {
17360 			exitRule();
17361 		}
17362 		return _localctx;
17363 	}
17364 
17365 	public static class ColumnSetDefinitionContext extends ParserRuleContext {
17366 		public IgnoredIdentifierContext ignoredIdentifier() {
17367 			return getRuleContext(IgnoredIdentifierContext.class,0);
17368 		}
17369 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
17370 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
17371 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17372 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
17373 		public ColumnSetDefinitionContext(ParserRuleContext parent, int invokingState) {
17374 			super(parent, invokingState);
17375 		}
17376 		@Override public int getRuleIndex() { return RULE_columnSetDefinition; }
17377 		@Override
17378 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17379 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnSetDefinition(this);
17380 			else return visitor.visitChildren(this);
17381 		}
17382 	}
17383 
17384 	public final ColumnSetDefinitionContext columnSetDefinition() throws RecognitionException {
17385 		ColumnSetDefinitionContext _localctx = new ColumnSetDefinitionContext(_ctx, getState());
17386 		enterRule(_localctx, 368, RULE_columnSetDefinition);
17387 		try {
17388 			enterOuterAlt(_localctx, 1);
17389 			{
17390 			setState(2607);
17391 			ignoredIdentifier();
17392 			setState(2608);
17393 			match(IDENTIFIER_);
17394 			setState(2609);
17395 			match(COLUMN_SET);
17396 			setState(2610);
17397 			match(FOR);
17398 			setState(2611);
17399 			match(ALL_SPARSE_COLUMNS);
17400 			}
17401 		}
17402 		catch (RecognitionException re) {
17403 			_localctx.exception = re;
17404 			_errHandler.reportError(this, re);
17405 			_errHandler.recover(this, re);
17406 		}
17407 		finally {
17408 			exitRule();
17409 		}
17410 		return _localctx;
17411 	}
17412 
17413 	public static class TableConstraintContext extends ParserRuleContext {
17414 		public TablePrimaryConstraintContext tablePrimaryConstraint() {
17415 			return getRuleContext(TablePrimaryConstraintContext.class,0);
17416 		}
17417 		public TableForeignKeyConstraintContext tableForeignKeyConstraint() {
17418 			return getRuleContext(TableForeignKeyConstraintContext.class,0);
17419 		}
17420 		public CheckConstraintContext checkConstraint() {
17421 			return getRuleContext(CheckConstraintContext.class,0);
17422 		}
17423 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
17424 		public ConstraintNameContext constraintName() {
17425 			return getRuleContext(ConstraintNameContext.class,0);
17426 		}
17427 		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
17428 			super(parent, invokingState);
17429 		}
17430 		@Override public int getRuleIndex() { return RULE_tableConstraint; }
17431 		@Override
17432 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17433 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableConstraint(this);
17434 			else return visitor.visitChildren(this);
17435 		}
17436 	}
17437 
17438 	public final TableConstraintContext tableConstraint() throws RecognitionException {
17439 		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
17440 		enterRule(_localctx, 370, RULE_tableConstraint);
17441 		int _la;
17442 		try {
17443 			enterOuterAlt(_localctx, 1);
17444 			{
17445 			setState(2615);
17446 			_errHandler.sync(this);
17447 			_la = _input.LA(1);
17448 			if (_la==CONSTRAINT) {
17449 				{
17450 				setState(2613);
17451 				match(CONSTRAINT);
17452 				setState(2614);
17453 				constraintName();
17454 				}
17455 			}
17456 
17457 			setState(2620);
17458 			_errHandler.sync(this);
17459 			switch (_input.LA(1)) {
17460 			case PRIMARY:
17461 			case UNIQUE:
17462 			case KEY:
17463 				{
17464 				setState(2617);
17465 				tablePrimaryConstraint();
17466 				}
17467 				break;
17468 			case LP_:
17469 			case FOREIGN:
17470 				{
17471 				setState(2618);
17472 				tableForeignKeyConstraint();
17473 				}
17474 				break;
17475 			case CHECK:
17476 				{
17477 				setState(2619);
17478 				checkConstraint();
17479 				}
17480 				break;
17481 			default:
17482 				throw new NoViableAltException(this);
17483 			}
17484 			}
17485 		}
17486 		catch (RecognitionException re) {
17487 			_localctx.exception = re;
17488 			_errHandler.reportError(this, re);
17489 			_errHandler.recover(this, re);
17490 		}
17491 		finally {
17492 			exitRule();
17493 		}
17494 		return _localctx;
17495 	}
17496 
17497 	public static class TablePrimaryConstraintContext extends ParserRuleContext {
17498 		public PrimaryKeyUniqueContext primaryKeyUnique() {
17499 			return getRuleContext(PrimaryKeyUniqueContext.class,0);
17500 		}
17501 		public DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() {
17502 			return getRuleContext(DiskTablePrimaryConstraintOptionContext.class,0);
17503 		}
17504 		public MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() {
17505 			return getRuleContext(MemoryTablePrimaryConstraintOptionContext.class,0);
17506 		}
17507 		public TablePrimaryConstraintContext(ParserRuleContext parent, int invokingState) {
17508 			super(parent, invokingState);
17509 		}
17510 		@Override public int getRuleIndex() { return RULE_tablePrimaryConstraint; }
17511 		@Override
17512 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17513 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTablePrimaryConstraint(this);
17514 			else return visitor.visitChildren(this);
17515 		}
17516 	}
17517 
17518 	public final TablePrimaryConstraintContext tablePrimaryConstraint() throws RecognitionException {
17519 		TablePrimaryConstraintContext _localctx = new TablePrimaryConstraintContext(_ctx, getState());
17520 		enterRule(_localctx, 372, RULE_tablePrimaryConstraint);
17521 		try {
17522 			enterOuterAlt(_localctx, 1);
17523 			{
17524 			setState(2622);
17525 			primaryKeyUnique();
17526 			setState(2625);
17527 			_errHandler.sync(this);
17528 			switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) {
17529 			case 1:
17530 				{
17531 				setState(2623);
17532 				diskTablePrimaryConstraintOption();
17533 				}
17534 				break;
17535 			case 2:
17536 				{
17537 				setState(2624);
17538 				memoryTablePrimaryConstraintOption();
17539 				}
17540 				break;
17541 			}
17542 			}
17543 		}
17544 		catch (RecognitionException re) {
17545 			_localctx.exception = re;
17546 			_errHandler.reportError(this, re);
17547 			_errHandler.recover(this, re);
17548 		}
17549 		finally {
17550 			exitRule();
17551 		}
17552 		return _localctx;
17553 	}
17554 
17555 	public static class PrimaryKeyUniqueContext extends ParserRuleContext {
17556 		public PrimaryKeyContext primaryKey() {
17557 			return getRuleContext(PrimaryKeyContext.class,0);
17558 		}
17559 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
17560 		public PrimaryKeyUniqueContext(ParserRuleContext parent, int invokingState) {
17561 			super(parent, invokingState);
17562 		}
17563 		@Override public int getRuleIndex() { return RULE_primaryKeyUnique; }
17564 		@Override
17565 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17566 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyUnique(this);
17567 			else return visitor.visitChildren(this);
17568 		}
17569 	}
17570 
17571 	public final PrimaryKeyUniqueContext primaryKeyUnique() throws RecognitionException {
17572 		PrimaryKeyUniqueContext _localctx = new PrimaryKeyUniqueContext(_ctx, getState());
17573 		enterRule(_localctx, 374, RULE_primaryKeyUnique);
17574 		try {
17575 			setState(2629);
17576 			_errHandler.sync(this);
17577 			switch (_input.LA(1)) {
17578 			case PRIMARY:
17579 			case KEY:
17580 				enterOuterAlt(_localctx, 1);
17581 				{
17582 				setState(2627);
17583 				primaryKey();
17584 				}
17585 				break;
17586 			case UNIQUE:
17587 				enterOuterAlt(_localctx, 2);
17588 				{
17589 				setState(2628);
17590 				match(UNIQUE);
17591 				}
17592 				break;
17593 			default:
17594 				throw new NoViableAltException(this);
17595 			}
17596 		}
17597 		catch (RecognitionException re) {
17598 			_localctx.exception = re;
17599 			_errHandler.reportError(this, re);
17600 			_errHandler.recover(this, re);
17601 		}
17602 		finally {
17603 			exitRule();
17604 		}
17605 		return _localctx;
17606 	}
17607 
17608 	public static class DiskTablePrimaryConstraintOptionContext extends ParserRuleContext {
17609 		public ColumnNamesContext columnNames() {
17610 			return getRuleContext(ColumnNamesContext.class,0);
17611 		}
17612 		public ClusterOptionContext clusterOption() {
17613 			return getRuleContext(ClusterOptionContext.class,0);
17614 		}
17615 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
17616 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
17617 		}
17618 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
17619 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
17620 		}
17621 		public DiskTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17622 			super(parent, invokingState);
17623 		}
17624 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryConstraintOption; }
17625 		@Override
17626 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17627 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryConstraintOption(this);
17628 			else return visitor.visitChildren(this);
17629 		}
17630 	}
17631 
17632 	public final DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() throws RecognitionException {
17633 		DiskTablePrimaryConstraintOptionContext _localctx = new DiskTablePrimaryConstraintOptionContext(_ctx, getState());
17634 		enterRule(_localctx, 376, RULE_diskTablePrimaryConstraintOption);
17635 		int _la;
17636 		try {
17637 			enterOuterAlt(_localctx, 1);
17638 			{
17639 			setState(2632);
17640 			_errHandler.sync(this);
17641 			_la = _input.LA(1);
17642 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
17643 				{
17644 				setState(2631);
17645 				clusterOption();
17646 				}
17647 			}
17648 
17649 			setState(2634);
17650 			columnNames();
17651 			setState(2636);
17652 			_errHandler.sync(this);
17653 			switch ( getInterpreter().adaptivePredict(_input,213,_ctx) ) {
17654 			case 1:
17655 				{
17656 				setState(2635);
17657 				primaryKeyWithClause();
17658 				}
17659 				break;
17660 			}
17661 			setState(2639);
17662 			_errHandler.sync(this);
17663 			_la = _input.LA(1);
17664 			if (_la==ON) {
17665 				{
17666 				setState(2638);
17667 				primaryKeyOnClause();
17668 				}
17669 			}
17670 
17671 			}
17672 		}
17673 		catch (RecognitionException re) {
17674 			_localctx.exception = re;
17675 			_errHandler.reportError(this, re);
17676 			_errHandler.recover(this, re);
17677 		}
17678 		finally {
17679 			exitRule();
17680 		}
17681 		return _localctx;
17682 	}
17683 
17684 	public static class MemoryTablePrimaryConstraintOptionContext extends ParserRuleContext {
17685 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17686 		public ColumnNamesContext columnNames() {
17687 			return getRuleContext(ColumnNamesContext.class,0);
17688 		}
17689 		public HashWithBucketContext hashWithBucket() {
17690 			return getRuleContext(HashWithBucketContext.class,0);
17691 		}
17692 		public MemoryTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17693 			super(parent, invokingState);
17694 		}
17695 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryConstraintOption; }
17696 		@Override
17697 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17698 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryConstraintOption(this);
17699 			else return visitor.visitChildren(this);
17700 		}
17701 	}
17702 
17703 	public final MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() throws RecognitionException {
17704 		MemoryTablePrimaryConstraintOptionContext _localctx = new MemoryTablePrimaryConstraintOptionContext(_ctx, getState());
17705 		enterRule(_localctx, 378, RULE_memoryTablePrimaryConstraintOption);
17706 		try {
17707 			enterOuterAlt(_localctx, 1);
17708 			{
17709 			setState(2641);
17710 			match(NONCLUSTERED);
17711 			setState(2644);
17712 			_errHandler.sync(this);
17713 			switch (_input.LA(1)) {
17714 			case LP_:
17715 				{
17716 				setState(2642);
17717 				columnNames();
17718 				}
17719 				break;
17720 			case HASH:
17721 				{
17722 				setState(2643);
17723 				hashWithBucket();
17724 				}
17725 				break;
17726 			default:
17727 				throw new NoViableAltException(this);
17728 			}
17729 			}
17730 		}
17731 		catch (RecognitionException re) {
17732 			_localctx.exception = re;
17733 			_errHandler.reportError(this, re);
17734 			_errHandler.recover(this, re);
17735 		}
17736 		finally {
17737 			exitRule();
17738 		}
17739 		return _localctx;
17740 	}
17741 
17742 	public static class HashWithBucketContext extends ParserRuleContext {
17743 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
17744 		public ColumnNamesContext columnNames() {
17745 			return getRuleContext(ColumnNamesContext.class,0);
17746 		}
17747 		public WithBucketContext withBucket() {
17748 			return getRuleContext(WithBucketContext.class,0);
17749 		}
17750 		public HashWithBucketContext(ParserRuleContext parent, int invokingState) {
17751 			super(parent, invokingState);
17752 		}
17753 		@Override public int getRuleIndex() { return RULE_hashWithBucket; }
17754 		@Override
17755 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17756 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashWithBucket(this);
17757 			else return visitor.visitChildren(this);
17758 		}
17759 	}
17760 
17761 	public final HashWithBucketContext hashWithBucket() throws RecognitionException {
17762 		HashWithBucketContext _localctx = new HashWithBucketContext(_ctx, getState());
17763 		enterRule(_localctx, 380, RULE_hashWithBucket);
17764 		try {
17765 			enterOuterAlt(_localctx, 1);
17766 			{
17767 			setState(2646);
17768 			match(HASH);
17769 			setState(2647);
17770 			columnNames();
17771 			setState(2648);
17772 			withBucket();
17773 			}
17774 		}
17775 		catch (RecognitionException re) {
17776 			_localctx.exception = re;
17777 			_errHandler.reportError(this, re);
17778 			_errHandler.recover(this, re);
17779 		}
17780 		finally {
17781 			exitRule();
17782 		}
17783 		return _localctx;
17784 	}
17785 
17786 	public static class TableForeignKeyConstraintContext extends ParserRuleContext {
17787 		public List<ColumnNamesContext> columnNames() {
17788 			return getRuleContexts(ColumnNamesContext.class);
17789 		}
17790 		public ColumnNamesContext columnNames(int i) {
17791 			return getRuleContext(ColumnNamesContext.class,i);
17792 		}
17793 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
17794 		public TableNameContext tableName() {
17795 			return getRuleContext(TableNameContext.class,0);
17796 		}
17797 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
17798 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
17799 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
17800 			return getRuleContexts(ForeignKeyOnActionContext.class);
17801 		}
17802 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
17803 			return getRuleContext(ForeignKeyOnActionContext.class,i);
17804 		}
17805 		public TableForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17806 			super(parent, invokingState);
17807 		}
17808 		@Override public int getRuleIndex() { return RULE_tableForeignKeyConstraint; }
17809 		@Override
17810 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17811 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableForeignKeyConstraint(this);
17812 			else return visitor.visitChildren(this);
17813 		}
17814 	}
17815 
17816 	public final TableForeignKeyConstraintContext tableForeignKeyConstraint() throws RecognitionException {
17817 		TableForeignKeyConstraintContext _localctx = new TableForeignKeyConstraintContext(_ctx, getState());
17818 		enterRule(_localctx, 382, RULE_tableForeignKeyConstraint);
17819 		int _la;
17820 		try {
17821 			enterOuterAlt(_localctx, 1);
17822 			{
17823 			setState(2652);
17824 			_errHandler.sync(this);
17825 			_la = _input.LA(1);
17826 			if (_la==FOREIGN) {
17827 				{
17828 				setState(2650);
17829 				match(FOREIGN);
17830 				setState(2651);
17831 				match(KEY);
17832 				}
17833 			}
17834 
17835 			setState(2654);
17836 			columnNames();
17837 			setState(2655);
17838 			match(REFERENCES);
17839 			setState(2656);
17840 			tableName();
17841 			setState(2657);
17842 			columnNames();
17843 			setState(2661);
17844 			_errHandler.sync(this);
17845 			_la = _input.LA(1);
17846 			while (_la==ON || _la==NOT) {
17847 				{
17848 				{
17849 				setState(2658);
17850 				foreignKeyOnAction();
17851 				}
17852 				}
17853 				setState(2663);
17854 				_errHandler.sync(this);
17855 				_la = _input.LA(1);
17856 			}
17857 			}
17858 		}
17859 		catch (RecognitionException re) {
17860 			_localctx.exception = re;
17861 			_errHandler.reportError(this, re);
17862 			_errHandler.recover(this, re);
17863 		}
17864 		finally {
17865 			exitRule();
17866 		}
17867 		return _localctx;
17868 	}
17869 
17870 	public static class TableIndexContext extends ParserRuleContext {
17871 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
17872 		public IndexNameContext indexName() {
17873 			return getRuleContext(IndexNameContext.class,0);
17874 		}
17875 		public IndexNameOptionContext indexNameOption() {
17876 			return getRuleContext(IndexNameOptionContext.class,0);
17877 		}
17878 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17879 		public IndexOptionsContext indexOptions() {
17880 			return getRuleContext(IndexOptionsContext.class,0);
17881 		}
17882 		public IndexOnClauseContext indexOnClause() {
17883 			return getRuleContext(IndexOnClauseContext.class,0);
17884 		}
17885 		public FileStreamOnContext fileStreamOn() {
17886 			return getRuleContext(FileStreamOnContext.class,0);
17887 		}
17888 		public TableIndexContext(ParserRuleContext parent, int invokingState) {
17889 			super(parent, invokingState);
17890 		}
17891 		@Override public int getRuleIndex() { return RULE_tableIndex; }
17892 		@Override
17893 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17894 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableIndex(this);
17895 			else return visitor.visitChildren(this);
17896 		}
17897 	}
17898 
17899 	public final TableIndexContext tableIndex() throws RecognitionException {
17900 		TableIndexContext _localctx = new TableIndexContext(_ctx, getState());
17901 		enterRule(_localctx, 384, RULE_tableIndex);
17902 		int _la;
17903 		try {
17904 			enterOuterAlt(_localctx, 1);
17905 			{
17906 			setState(2664);
17907 			match(INDEX);
17908 			setState(2665);
17909 			indexName();
17910 			setState(2666);
17911 			indexNameOption();
17912 			setState(2669);
17913 			_errHandler.sync(this);
17914 			_la = _input.LA(1);
17915 			if (_la==WITH) {
17916 				{
17917 				setState(2667);
17918 				match(WITH);
17919 				setState(2668);
17920 				indexOptions();
17921 				}
17922 			}
17923 
17924 			setState(2672);
17925 			_errHandler.sync(this);
17926 			_la = _input.LA(1);
17927 			if (_la==ON) {
17928 				{
17929 				setState(2671);
17930 				indexOnClause();
17931 				}
17932 			}
17933 
17934 			setState(2675);
17935 			_errHandler.sync(this);
17936 			_la = _input.LA(1);
17937 			if (_la==FILESTREAM_ON) {
17938 				{
17939 				setState(2674);
17940 				fileStreamOn();
17941 				}
17942 			}
17943 
17944 			}
17945 		}
17946 		catch (RecognitionException re) {
17947 			_localctx.exception = re;
17948 			_errHandler.reportError(this, re);
17949 			_errHandler.recover(this, re);
17950 		}
17951 		finally {
17952 			exitRule();
17953 		}
17954 		return _localctx;
17955 	}
17956 
17957 	public static class IndexNameOptionContext extends ParserRuleContext {
17958 		public ColumnNamesContext columnNames() {
17959 			return getRuleContext(ColumnNamesContext.class,0);
17960 		}
17961 		public ClusterOptionContext clusterOption() {
17962 			return getRuleContext(ClusterOptionContext.class,0);
17963 		}
17964 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
17965 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
17966 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17967 		public IndexNameOptionContext(ParserRuleContext parent, int invokingState) {
17968 			super(parent, invokingState);
17969 		}
17970 		@Override public int getRuleIndex() { return RULE_indexNameOption; }
17971 		@Override
17972 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17973 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNameOption(this);
17974 			else return visitor.visitChildren(this);
17975 		}
17976 	}
17977 
17978 	public final IndexNameOptionContext indexNameOption() throws RecognitionException {
17979 		IndexNameOptionContext _localctx = new IndexNameOptionContext(_ctx, getState());
17980 		enterRule(_localctx, 386, RULE_indexNameOption);
17981 		int _la;
17982 		try {
17983 			setState(2688);
17984 			_errHandler.sync(this);
17985 			switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) {
17986 			case 1:
17987 				enterOuterAlt(_localctx, 1);
17988 				{
17989 				setState(2678);
17990 				_errHandler.sync(this);
17991 				_la = _input.LA(1);
17992 				if (_la==CLUSTERED || _la==NONCLUSTERED) {
17993 					{
17994 					setState(2677);
17995 					clusterOption();
17996 					}
17997 				}
17998 
17999 				setState(2680);
18000 				columnNames();
18001 				}
18002 				break;
18003 			case 2:
18004 				enterOuterAlt(_localctx, 2);
18005 				{
18006 				setState(2681);
18007 				match(CLUSTERED);
18008 				setState(2682);
18009 				match(COLUMNSTORE);
18010 				}
18011 				break;
18012 			case 3:
18013 				enterOuterAlt(_localctx, 3);
18014 				{
18015 				setState(2684);
18016 				_errHandler.sync(this);
18017 				_la = _input.LA(1);
18018 				if (_la==NONCLUSTERED) {
18019 					{
18020 					setState(2683);
18021 					match(NONCLUSTERED);
18022 					}
18023 				}
18024 
18025 				setState(2686);
18026 				match(COLUMNSTORE);
18027 				setState(2687);
18028 				columnNames();
18029 				}
18030 				break;
18031 			}
18032 		}
18033 		catch (RecognitionException re) {
18034 			_localctx.exception = re;
18035 			_errHandler.reportError(this, re);
18036 			_errHandler.recover(this, re);
18037 		}
18038 		finally {
18039 			exitRule();
18040 		}
18041 		return _localctx;
18042 	}
18043 
18044 	public static class IndexOptionsContext extends ParserRuleContext {
18045 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18046 		public List<IndexOptionContext> indexOption() {
18047 			return getRuleContexts(IndexOptionContext.class);
18048 		}
18049 		public IndexOptionContext indexOption(int i) {
18050 			return getRuleContext(IndexOptionContext.class,i);
18051 		}
18052 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18053 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18054 		public TerminalNode COMMA_(int i) {
18055 			return getToken(SQLServerStatementParser.COMMA_, i);
18056 		}
18057 		public IndexOptionsContext(ParserRuleContext parent, int invokingState) {
18058 			super(parent, invokingState);
18059 		}
18060 		@Override public int getRuleIndex() { return RULE_indexOptions; }
18061 		@Override
18062 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18063 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOptions(this);
18064 			else return visitor.visitChildren(this);
18065 		}
18066 	}
18067 
18068 	public final IndexOptionsContext indexOptions() throws RecognitionException {
18069 		IndexOptionsContext _localctx = new IndexOptionsContext(_ctx, getState());
18070 		enterRule(_localctx, 388, RULE_indexOptions);
18071 		int _la;
18072 		try {
18073 			enterOuterAlt(_localctx, 1);
18074 			{
18075 			setState(2690);
18076 			match(LP_);
18077 			setState(2691);
18078 			indexOption();
18079 			setState(2696);
18080 			_errHandler.sync(this);
18081 			_la = _input.LA(1);
18082 			while (_la==COMMA_) {
18083 				{
18084 				{
18085 				setState(2692);
18086 				match(COMMA_);
18087 				setState(2693);
18088 				indexOption();
18089 				}
18090 				}
18091 				setState(2698);
18092 				_errHandler.sync(this);
18093 				_la = _input.LA(1);
18094 			}
18095 			setState(2699);
18096 			match(RP_);
18097 			}
18098 		}
18099 		catch (RecognitionException re) {
18100 			_localctx.exception = re;
18101 			_errHandler.reportError(this, re);
18102 			_errHandler.recover(this, re);
18103 		}
18104 		finally {
18105 			exitRule();
18106 		}
18107 		return _localctx;
18108 	}
18109 
18110 	public static class PeriodClauseContext extends ParserRuleContext {
18111 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
18112 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18113 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
18114 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18115 		public List<ColumnNameContext> columnName() {
18116 			return getRuleContexts(ColumnNameContext.class);
18117 		}
18118 		public ColumnNameContext columnName(int i) {
18119 			return getRuleContext(ColumnNameContext.class,i);
18120 		}
18121 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
18122 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18123 		public PeriodClauseContext(ParserRuleContext parent, int invokingState) {
18124 			super(parent, invokingState);
18125 		}
18126 		@Override public int getRuleIndex() { return RULE_periodClause; }
18127 		@Override
18128 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18129 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPeriodClause(this);
18130 			else return visitor.visitChildren(this);
18131 		}
18132 	}
18133 
18134 	public final PeriodClauseContext periodClause() throws RecognitionException {
18135 		PeriodClauseContext _localctx = new PeriodClauseContext(_ctx, getState());
18136 		enterRule(_localctx, 390, RULE_periodClause);
18137 		try {
18138 			enterOuterAlt(_localctx, 1);
18139 			{
18140 			setState(2701);
18141 			match(PERIOD);
18142 			setState(2702);
18143 			match(FOR);
18144 			setState(2703);
18145 			match(SYSTEM_TIME);
18146 			setState(2704);
18147 			match(LP_);
18148 			setState(2705);
18149 			columnName();
18150 			setState(2706);
18151 			match(COMMA_);
18152 			setState(2707);
18153 			columnName();
18154 			setState(2708);
18155 			match(RP_);
18156 			}
18157 		}
18158 		catch (RecognitionException re) {
18159 			_localctx.exception = re;
18160 			_errHandler.reportError(this, re);
18161 			_errHandler.recover(this, re);
18162 		}
18163 		finally {
18164 			exitRule();
18165 		}
18166 		return _localctx;
18167 	}
18168 
18169 	public static class PartitionSchemeContext extends ParserRuleContext {
18170 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18171 		public SchemaNameContext schemaName() {
18172 			return getRuleContext(SchemaNameContext.class,0);
18173 		}
18174 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18175 		public ColumnNameContext columnName() {
18176 			return getRuleContext(ColumnNameContext.class,0);
18177 		}
18178 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18179 		public IgnoredIdentifierContext ignoredIdentifier() {
18180 			return getRuleContext(IgnoredIdentifierContext.class,0);
18181 		}
18182 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
18183 		public PartitionSchemeContext(ParserRuleContext parent, int invokingState) {
18184 			super(parent, invokingState);
18185 		}
18186 		@Override public int getRuleIndex() { return RULE_partitionScheme; }
18187 		@Override
18188 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18189 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionScheme(this);
18190 			else return visitor.visitChildren(this);
18191 		}
18192 	}
18193 
18194 	public final PartitionSchemeContext partitionScheme() throws RecognitionException {
18195 		PartitionSchemeContext _localctx = new PartitionSchemeContext(_ctx, getState());
18196 		enterRule(_localctx, 392, RULE_partitionScheme);
18197 		int _la;
18198 		try {
18199 			enterOuterAlt(_localctx, 1);
18200 			{
18201 			setState(2720);
18202 			_errHandler.sync(this);
18203 			_la = _input.LA(1);
18204 			if (_la==ON) {
18205 				{
18206 				setState(2710);
18207 				match(ON);
18208 				setState(2718);
18209 				_errHandler.sync(this);
18210 				switch ( getInterpreter().adaptivePredict(_input,225,_ctx) ) {
18211 				case 1:
18212 					{
18213 					setState(2711);
18214 					schemaName();
18215 					setState(2712);
18216 					match(LP_);
18217 					setState(2713);
18218 					columnName();
18219 					setState(2714);
18220 					match(RP_);
18221 					}
18222 					break;
18223 				case 2:
18224 					{
18225 					setState(2716);
18226 					ignoredIdentifier();
18227 					}
18228 					break;
18229 				case 3:
18230 					{
18231 					setState(2717);
18232 					match(STRING_);
18233 					}
18234 					break;
18235 				}
18236 				}
18237 			}
18238 
18239 			}
18240 		}
18241 		catch (RecognitionException re) {
18242 			_localctx.exception = re;
18243 			_errHandler.reportError(this, re);
18244 			_errHandler.recover(this, re);
18245 		}
18246 		finally {
18247 			exitRule();
18248 		}
18249 		return _localctx;
18250 	}
18251 
18252 	public static class FileGroupContext extends ParserRuleContext {
18253 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
18254 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
18255 		public TableOptionsContext tableOptions() {
18256 			return getRuleContext(TableOptionsContext.class,0);
18257 		}
18258 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
18259 			return getRuleContexts(IgnoredIdentifierContext.class);
18260 		}
18261 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
18262 			return getRuleContext(IgnoredIdentifierContext.class,i);
18263 		}
18264 		public List<TerminalNode> STRING_() { return getTokens(SQLServerStatementParser.STRING_); }
18265 		public TerminalNode STRING_(int i) {
18266 			return getToken(SQLServerStatementParser.STRING_, i);
18267 		}
18268 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
18269 		public SchemaNameContext schemaName() {
18270 			return getRuleContext(SchemaNameContext.class,0);
18271 		}
18272 		public FileGroupContext(ParserRuleContext parent, int invokingState) {
18273 			super(parent, invokingState);
18274 		}
18275 		@Override public int getRuleIndex() { return RULE_fileGroup; }
18276 		@Override
18277 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18278 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileGroup(this);
18279 			else return visitor.visitChildren(this);
18280 		}
18281 	}
18282 
18283 	public final FileGroupContext fileGroup() throws RecognitionException {
18284 		FileGroupContext _localctx = new FileGroupContext(_ctx, getState());
18285 		enterRule(_localctx, 394, RULE_fileGroup);
18286 		int _la;
18287 		try {
18288 			enterOuterAlt(_localctx, 1);
18289 			{
18290 			setState(2727);
18291 			_errHandler.sync(this);
18292 			_la = _input.LA(1);
18293 			if (_la==TEXTIMAGE_ON) {
18294 				{
18295 				setState(2722);
18296 				match(TEXTIMAGE_ON);
18297 				setState(2725);
18298 				_errHandler.sync(this);
18299 				switch (_input.LA(1)) {
18300 				case IDENTIFIER_:
18301 					{
18302 					setState(2723);
18303 					ignoredIdentifier();
18304 					}
18305 					break;
18306 				case STRING_:
18307 					{
18308 					setState(2724);
18309 					match(STRING_);
18310 					}
18311 					break;
18312 				default:
18313 					throw new NoViableAltException(this);
18314 				}
18315 				}
18316 			}
18317 
18318 			setState(2736);
18319 			_errHandler.sync(this);
18320 			_la = _input.LA(1);
18321 			if (_la==FILESTREAM_ON || _la==IDENTIFIER_) {
18322 				{
18323 				setState(2734);
18324 				_errHandler.sync(this);
18325 				switch (_input.LA(1)) {
18326 				case FILESTREAM_ON:
18327 					{
18328 					setState(2729);
18329 					match(FILESTREAM_ON);
18330 					{
18331 					setState(2730);
18332 					schemaName();
18333 					}
18334 					}
18335 					break;
18336 				case IDENTIFIER_:
18337 					{
18338 					setState(2731);
18339 					ignoredIdentifier();
18340 					setState(2732);
18341 					match(STRING_);
18342 					}
18343 					break;
18344 				default:
18345 					throw new NoViableAltException(this);
18346 				}
18347 				}
18348 			}
18349 
18350 			setState(2740);
18351 			_errHandler.sync(this);
18352 			switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) {
18353 			case 1:
18354 				{
18355 				setState(2738);
18356 				match(WITH);
18357 				setState(2739);
18358 				tableOptions();
18359 				}
18360 				break;
18361 			}
18362 			}
18363 		}
18364 		catch (RecognitionException re) {
18365 			_localctx.exception = re;
18366 			_errHandler.reportError(this, re);
18367 			_errHandler.recover(this, re);
18368 		}
18369 		finally {
18370 			exitRule();
18371 		}
18372 		return _localctx;
18373 	}
18374 
18375 	public static class TableOptionsContext extends ParserRuleContext {
18376 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18377 		public List<TableOptionContext> tableOption() {
18378 			return getRuleContexts(TableOptionContext.class);
18379 		}
18380 		public TableOptionContext tableOption(int i) {
18381 			return getRuleContext(TableOptionContext.class,i);
18382 		}
18383 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18384 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18385 		public TerminalNode COMMA_(int i) {
18386 			return getToken(SQLServerStatementParser.COMMA_, i);
18387 		}
18388 		public TableOptionsContext(ParserRuleContext parent, int invokingState) {
18389 			super(parent, invokingState);
18390 		}
18391 		@Override public int getRuleIndex() { return RULE_tableOptions; }
18392 		@Override
18393 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18394 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOptions(this);
18395 			else return visitor.visitChildren(this);
18396 		}
18397 	}
18398 
18399 	public final TableOptionsContext tableOptions() throws RecognitionException {
18400 		TableOptionsContext _localctx = new TableOptionsContext(_ctx, getState());
18401 		enterRule(_localctx, 396, RULE_tableOptions);
18402 		int _la;
18403 		try {
18404 			enterOuterAlt(_localctx, 1);
18405 			{
18406 			setState(2742);
18407 			match(LP_);
18408 			setState(2743);
18409 			tableOption();
18410 			setState(2748);
18411 			_errHandler.sync(this);
18412 			_la = _input.LA(1);
18413 			while (_la==COMMA_) {
18414 				{
18415 				{
18416 				setState(2744);
18417 				match(COMMA_);
18418 				setState(2745);
18419 				tableOption();
18420 				}
18421 				}
18422 				setState(2750);
18423 				_errHandler.sync(this);
18424 				_la = _input.LA(1);
18425 			}
18426 			setState(2751);
18427 			match(RP_);
18428 			}
18429 		}
18430 		catch (RecognitionException re) {
18431 			_localctx.exception = re;
18432 			_errHandler.reportError(this, re);
18433 			_errHandler.recover(this, re);
18434 		}
18435 		finally {
18436 			exitRule();
18437 		}
18438 		return _localctx;
18439 	}
18440 
18441 	public static class TableOptionContext extends ParserRuleContext {
18442 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
18443 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
18444 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
18445 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
18446 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
18447 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18448 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
18449 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18450 		public PartitionExpressionsContext partitionExpressions() {
18451 			return getRuleContext(PartitionExpressionsContext.class,0);
18452 		}
18453 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18454 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
18455 		public IgnoredIdentifierContext ignoredIdentifier() {
18456 			return getRuleContext(IgnoredIdentifierContext.class,0);
18457 		}
18458 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
18459 		public CollationNameContext collationName() {
18460 			return getRuleContext(CollationNameContext.class,0);
18461 		}
18462 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
18463 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
18464 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
18465 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
18466 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
18467 		public OnHistoryTableClauseContext onHistoryTableClause() {
18468 			return getRuleContext(OnHistoryTableClauseContext.class,0);
18469 		}
18470 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
18471 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
18472 		public MigrationState_Context migrationState_() {
18473 			return getRuleContext(MigrationState_Context.class,0);
18474 		}
18475 		public TableStretchOptionsContext tableStretchOptions() {
18476 			return getRuleContext(TableStretchOptionsContext.class,0);
18477 		}
18478 		public TableOperationOptionContext tableOperationOption() {
18479 			return getRuleContext(TableOperationOptionContext.class,0);
18480 		}
18481 		public DistributionOptionContext distributionOption() {
18482 			return getRuleContext(DistributionOptionContext.class,0);
18483 		}
18484 		public DataWareHouseTableOptionContext dataWareHouseTableOption() {
18485 			return getRuleContext(DataWareHouseTableOptionContext.class,0);
18486 		}
18487 		public DataDelectionOptionContext dataDelectionOption() {
18488 			return getRuleContext(DataDelectionOptionContext.class,0);
18489 		}
18490 		public DataWareHousePartitionOptionContext dataWareHousePartitionOption() {
18491 			return getRuleContext(DataWareHousePartitionOptionContext.class,0);
18492 		}
18493 		public TableOptionContext(ParserRuleContext parent, int invokingState) {
18494 			super(parent, invokingState);
18495 		}
18496 		@Override public int getRuleIndex() { return RULE_tableOption; }
18497 		@Override
18498 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18499 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOption(this);
18500 			else return visitor.visitChildren(this);
18501 		}
18502 	}
18503 
18504 	public final TableOptionContext tableOption() throws RecognitionException {
18505 		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
18506 		enterRule(_localctx, 398, RULE_tableOption);
18507 		int _la;
18508 		try {
18509 			setState(2803);
18510 			_errHandler.sync(this);
18511 			switch ( getInterpreter().adaptivePredict(_input,238,_ctx) ) {
18512 			case 1:
18513 				enterOuterAlt(_localctx, 1);
18514 				{
18515 				setState(2753);
18516 				match(DATA_COMPRESSION);
18517 				setState(2754);
18518 				match(EQ_);
18519 				setState(2755);
18520 				_la = _input.LA(1);
18521 				if ( !(((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (ROW - 224)) | (1L << (NONE - 224)) | (1L << (PAGE - 224)))) != 0)) ) {
18522 				_errHandler.recoverInline(this);
18523 				}
18524 				else {
18525 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
18526 					_errHandler.reportMatch(this);
18527 					consume();
18528 				}
18529 				setState(2762);
18530 				_errHandler.sync(this);
18531 				_la = _input.LA(1);
18532 				if (_la==ON) {
18533 					{
18534 					setState(2756);
18535 					match(ON);
18536 					setState(2757);
18537 					match(PARTITIONS);
18538 					setState(2758);
18539 					match(LP_);
18540 					setState(2759);
18541 					partitionExpressions();
18542 					setState(2760);
18543 					match(RP_);
18544 					}
18545 				}
18546 
18547 				}
18548 				break;
18549 			case 2:
18550 				enterOuterAlt(_localctx, 2);
18551 				{
18552 				setState(2764);
18553 				match(FILETABLE_DIRECTORY);
18554 				setState(2765);
18555 				match(EQ_);
18556 				setState(2766);
18557 				ignoredIdentifier();
18558 				}
18559 				break;
18560 			case 3:
18561 				enterOuterAlt(_localctx, 3);
18562 				{
18563 				setState(2767);
18564 				match(FILETABLE_COLLATE_FILENAME);
18565 				setState(2768);
18566 				match(EQ_);
18567 				setState(2771);
18568 				_errHandler.sync(this);
18569 				switch (_input.LA(1)) {
18570 				case IDENTIFIER_:
18571 				case STRING_:
18572 					{
18573 					setState(2769);
18574 					collationName();
18575 					}
18576 					break;
18577 				case DATABASE_DEAULT:
18578 					{
18579 					setState(2770);
18580 					match(DATABASE_DEAULT);
18581 					}
18582 					break;
18583 				default:
18584 					throw new NoViableAltException(this);
18585 				}
18586 				}
18587 				break;
18588 			case 4:
18589 				enterOuterAlt(_localctx, 4);
18590 				{
18591 				setState(2773);
18592 				match(FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME);
18593 				setState(2774);
18594 				match(EQ_);
18595 				setState(2775);
18596 				ignoredIdentifier();
18597 				}
18598 				break;
18599 			case 5:
18600 				enterOuterAlt(_localctx, 5);
18601 				{
18602 				setState(2776);
18603 				match(FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME);
18604 				setState(2777);
18605 				match(EQ_);
18606 				setState(2778);
18607 				ignoredIdentifier();
18608 				}
18609 				break;
18610 			case 6:
18611 				enterOuterAlt(_localctx, 6);
18612 				{
18613 				setState(2779);
18614 				match(FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME);
18615 				setState(2780);
18616 				match(EQ_);
18617 				setState(2781);
18618 				ignoredIdentifier();
18619 				}
18620 				break;
18621 			case 7:
18622 				enterOuterAlt(_localctx, 7);
18623 				{
18624 				setState(2782);
18625 				match(SYSTEM_VERSIONING);
18626 				setState(2783);
18627 				match(EQ_);
18628 				setState(2784);
18629 				match(ON);
18630 				setState(2786);
18631 				_errHandler.sync(this);
18632 				_la = _input.LA(1);
18633 				if (_la==LP_) {
18634 					{
18635 					setState(2785);
18636 					onHistoryTableClause();
18637 					}
18638 				}
18639 
18640 				}
18641 				break;
18642 			case 8:
18643 				enterOuterAlt(_localctx, 8);
18644 				{
18645 				setState(2788);
18646 				match(REMOTE_DATA_ARCHIVE);
18647 				setState(2789);
18648 				match(EQ_);
18649 				setState(2796);
18650 				_errHandler.sync(this);
18651 				switch (_input.LA(1)) {
18652 				case ON:
18653 					{
18654 					setState(2790);
18655 					match(ON);
18656 					setState(2792);
18657 					_errHandler.sync(this);
18658 					_la = _input.LA(1);
18659 					if (_la==LP_) {
18660 						{
18661 						setState(2791);
18662 						tableStretchOptions();
18663 						}
18664 					}
18665 
18666 					}
18667 					break;
18668 				case OFF:
18669 					{
18670 					setState(2794);
18671 					match(OFF);
18672 					setState(2795);
18673 					migrationState_();
18674 					}
18675 					break;
18676 				default:
18677 					throw new NoViableAltException(this);
18678 				}
18679 				}
18680 				break;
18681 			case 9:
18682 				enterOuterAlt(_localctx, 9);
18683 				{
18684 				setState(2798);
18685 				tableOperationOption();
18686 				}
18687 				break;
18688 			case 10:
18689 				enterOuterAlt(_localctx, 10);
18690 				{
18691 				setState(2799);
18692 				distributionOption();
18693 				}
18694 				break;
18695 			case 11:
18696 				enterOuterAlt(_localctx, 11);
18697 				{
18698 				setState(2800);
18699 				dataWareHouseTableOption();
18700 				}
18701 				break;
18702 			case 12:
18703 				enterOuterAlt(_localctx, 12);
18704 				{
18705 				setState(2801);
18706 				dataDelectionOption();
18707 				}
18708 				break;
18709 			case 13:
18710 				enterOuterAlt(_localctx, 13);
18711 				{
18712 				setState(2802);
18713 				dataWareHousePartitionOption();
18714 				}
18715 				break;
18716 			}
18717 		}
18718 		catch (RecognitionException re) {
18719 			_localctx.exception = re;
18720 			_errHandler.reportError(this, re);
18721 			_errHandler.recover(this, re);
18722 		}
18723 		finally {
18724 			exitRule();
18725 		}
18726 		return _localctx;
18727 	}
18728 
18729 	public static class DataDelectionOptionContext extends ParserRuleContext {
18730 		public TerminalNode DATA_DELETION() { return getToken(SQLServerStatementParser.DATA_DELETION, 0); }
18731 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
18732 		public TerminalNode EQ_(int i) {
18733 			return getToken(SQLServerStatementParser.EQ_, i);
18734 		}
18735 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18736 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18737 		public TerminalNode FILTER_COLUMN() { return getToken(SQLServerStatementParser.FILTER_COLUMN, 0); }
18738 		public ColumnNameContext columnName() {
18739 			return getRuleContext(ColumnNameContext.class,0);
18740 		}
18741 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
18742 		public TerminalNode RETENTION_PERIOD() { return getToken(SQLServerStatementParser.RETENTION_PERIOD, 0); }
18743 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
18744 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
18745 		}
18746 		public DataDelectionOptionContext(ParserRuleContext parent, int invokingState) {
18747 			super(parent, invokingState);
18748 		}
18749 		@Override public int getRuleIndex() { return RULE_dataDelectionOption; }
18750 		@Override
18751 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18752 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataDelectionOption(this);
18753 			else return visitor.visitChildren(this);
18754 		}
18755 	}
18756 
18757 	public final DataDelectionOptionContext dataDelectionOption() throws RecognitionException {
18758 		DataDelectionOptionContext _localctx = new DataDelectionOptionContext(_ctx, getState());
18759 		enterRule(_localctx, 400, RULE_dataDelectionOption);
18760 		try {
18761 			enterOuterAlt(_localctx, 1);
18762 			{
18763 			setState(2805);
18764 			match(DATA_DELETION);
18765 			setState(2806);
18766 			match(EQ_);
18767 			setState(2807);
18768 			match(ON);
18769 			{
18770 			setState(2808);
18771 			match(LP_);
18772 			setState(2809);
18773 			match(FILTER_COLUMN);
18774 			setState(2810);
18775 			match(EQ_);
18776 			setState(2811);
18777 			columnName();
18778 			setState(2812);
18779 			match(COMMA_);
18780 			setState(2813);
18781 			match(RETENTION_PERIOD);
18782 			setState(2814);
18783 			match(EQ_);
18784 			setState(2815);
18785 			historyRetentionPeriod();
18786 			}
18787 			}
18788 		}
18789 		catch (RecognitionException re) {
18790 			_localctx.exception = re;
18791 			_errHandler.reportError(this, re);
18792 			_errHandler.recover(this, re);
18793 		}
18794 		finally {
18795 			exitRule();
18796 		}
18797 		return _localctx;
18798 	}
18799 
18800 	public static class TableStretchOptionsContext extends ParserRuleContext {
18801 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18802 		public List<TableStretchOptionContext> tableStretchOption() {
18803 			return getRuleContexts(TableStretchOptionContext.class);
18804 		}
18805 		public TableStretchOptionContext tableStretchOption(int i) {
18806 			return getRuleContext(TableStretchOptionContext.class,i);
18807 		}
18808 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18809 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18810 		public TerminalNode COMMA_(int i) {
18811 			return getToken(SQLServerStatementParser.COMMA_, i);
18812 		}
18813 		public TableStretchOptionsContext(ParserRuleContext parent, int invokingState) {
18814 			super(parent, invokingState);
18815 		}
18816 		@Override public int getRuleIndex() { return RULE_tableStretchOptions; }
18817 		@Override
18818 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18819 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOptions(this);
18820 			else return visitor.visitChildren(this);
18821 		}
18822 	}
18823 
18824 	public final TableStretchOptionsContext tableStretchOptions() throws RecognitionException {
18825 		TableStretchOptionsContext _localctx = new TableStretchOptionsContext(_ctx, getState());
18826 		enterRule(_localctx, 402, RULE_tableStretchOptions);
18827 		int _la;
18828 		try {
18829 			enterOuterAlt(_localctx, 1);
18830 			{
18831 			setState(2817);
18832 			match(LP_);
18833 			setState(2818);
18834 			tableStretchOption();
18835 			setState(2823);
18836 			_errHandler.sync(this);
18837 			_la = _input.LA(1);
18838 			while (_la==COMMA_) {
18839 				{
18840 				{
18841 				setState(2819);
18842 				match(COMMA_);
18843 				setState(2820);
18844 				tableStretchOption();
18845 				}
18846 				}
18847 				setState(2825);
18848 				_errHandler.sync(this);
18849 				_la = _input.LA(1);
18850 			}
18851 			setState(2826);
18852 			match(RP_);
18853 			}
18854 		}
18855 		catch (RecognitionException re) {
18856 			_localctx.exception = re;
18857 			_errHandler.reportError(this, re);
18858 			_errHandler.recover(this, re);
18859 		}
18860 		finally {
18861 			exitRule();
18862 		}
18863 		return _localctx;
18864 	}
18865 
18866 	public static class TableStretchOptionContext extends ParserRuleContext {
18867 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
18868 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
18869 		public TerminalNode EQ_(int i) {
18870 			return getToken(SQLServerStatementParser.EQ_, i);
18871 		}
18872 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
18873 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
18874 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
18875 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
18876 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
18877 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
18878 		public FunctionCallContext functionCall() {
18879 			return getRuleContext(FunctionCallContext.class,0);
18880 		}
18881 		public TableStretchOptionContext(ParserRuleContext parent, int invokingState) {
18882 			super(parent, invokingState);
18883 		}
18884 		@Override public int getRuleIndex() { return RULE_tableStretchOption; }
18885 		@Override
18886 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18887 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOption(this);
18888 			else return visitor.visitChildren(this);
18889 		}
18890 	}
18891 
18892 	public final TableStretchOptionContext tableStretchOption() throws RecognitionException {
18893 		TableStretchOptionContext _localctx = new TableStretchOptionContext(_ctx, getState());
18894 		enterRule(_localctx, 404, RULE_tableStretchOption);
18895 		int _la;
18896 		try {
18897 			enterOuterAlt(_localctx, 1);
18898 			{
18899 			setState(2835);
18900 			_errHandler.sync(this);
18901 			_la = _input.LA(1);
18902 			if (_la==FILTER_PREDICATE) {
18903 				{
18904 				setState(2828);
18905 				match(FILTER_PREDICATE);
18906 				setState(2829);
18907 				match(EQ_);
18908 				setState(2832);
18909 				_errHandler.sync(this);
18910 				switch (_input.LA(1)) {
18911 				case NULL:
18912 					{
18913 					setState(2830);
18914 					match(NULL);
18915 					}
18916 					break;
18917 				case TRUNCATE:
18918 				case SCHEMA:
18919 				case COLUMNS:
18920 				case PRECISION:
18921 				case FUNCTION:
18922 				case TRIGGER:
18923 				case CAST:
18924 				case SUBSTRING:
18925 				case OFF:
18926 				case IF:
18927 				case GROUP:
18928 				case LIMIT:
18929 				case OFFSET:
18930 				case SAVEPOINT:
18931 				case BOOLEAN:
18932 				case CHAR:
18933 				case ARRAY:
18934 				case INTERVAL:
18935 				case DATE:
18936 				case LOCALTIME:
18937 				case LOCALTIMESTAMP:
18938 				case QUARTER:
18939 				case WEEK:
18940 				case DAY:
18941 				case SECOND:
18942 				case MICROSECOND:
18943 				case MAX:
18944 				case MIN:
18945 				case SUM:
18946 				case COUNT:
18947 				case AVG:
18948 				case ENABLE:
18949 				case DISABLE:
18950 				case INSTANCE:
18951 				case DO:
18952 				case DEFINER:
18953 				case SQL:
18954 				case CASCADED:
18955 				case LOCAL:
18956 				case NEXT:
18957 				case NAME:
18958 				case INTEGER:
18959 				case TYPE:
18960 				case TEXT:
18961 				case VIEWS:
18962 				case READ_ONLY:
18963 				case DATABASE:
18964 				case RETURNS:
18965 				case DATEPART:
18966 				case PASSWORD:
18967 				case BINARY:
18968 				case HIDDEN_:
18969 				case MOD:
18970 				case PARTITION:
18971 				case PARTITIONS:
18972 				case TOP:
18973 				case ROW:
18974 				case ROWS:
18975 				case XOR:
18976 				case ALWAYS:
18977 				case ROLE:
18978 				case START:
18979 				case ALGORITHM:
18980 				case AUTO:
18981 				case BLOCKERS:
18982 				case CLUSTERED:
18983 				case NONCLUSTERED:
18984 				case COLUMNSTORE:
18985 				case CONTENT:
18986 				case CONVERT:
18987 				case YEARS:
18988 				case MONTHS:
18989 				case WEEKS:
18990 				case DAYS:
18991 				case MINUTES:
18992 				case DENY:
18993 				case DETERMINISTIC:
18994 				case DISTRIBUTION:
18995 				case DOCUMENT:
18996 				case DURABILITY:
18997 				case ENCRYPTED:
18998 				case FILESTREAM:
18999 				case FILETABLE:
19000 				case FILLFACTOR:
19001 				case FOLLOWING:
19002 				case HASH:
19003 				case HEAP:
19004 				case INBOUND:
19005 				case OUTBOUND:
19006 				case UNBOUNDED:
19007 				case INFINITE:
19008 				case LOGIN:
19009 				case MASKED:
19010 				case MAXDOP:
19011 				case MOVE:
19012 				case NOCHECK:
19013 				case OBJECT:
19014 				case ONLINE:
19015 				case OVER:
19016 				case PAGE:
19017 				case PAUSED:
19018 				case PERIOD:
19019 				case PERSISTED:
19020 				case PRECEDING:
19021 				case RANDOMIZED:
19022 				case RANGE:
19023 				case REBUILD:
19024 				case REPLICATE:
19025 				case REPLICATION:
19026 				case RESUMABLE:
19027 				case ROWGUIDCOL:
19028 				case SAVE:
19029 				case SELF:
19030 				case SPARSE:
19031 				case SWITCH:
19032 				case TRAN:
19033 				case TRANCOUNT:
19034 				case CONTROL:
19035 				case CONCAT:
19036 				case TAKE:
19037 				case OWNERSHIP:
19038 				case DEFINITION:
19039 				case APPLICATION:
19040 				case ASSEMBLY:
19041 				case SYMMETRIC:
19042 				case ASYMMETRIC:
19043 				case SERVER:
19044 				case RECEIVE:
19045 				case CHANGE:
19046 				case TRACE:
19047 				case TRACKING:
19048 				case RESOURCES:
19049 				case SETTINGS:
19050 				case STATE:
19051 				case AVAILABILITY:
19052 				case CREDENTIAL:
19053 				case ENDPOINT:
19054 				case EVENT:
19055 				case NOTIFICATION:
19056 				case LINKED:
19057 				case AUDIT:
19058 				case DDL:
19059 				case XML:
19060 				case IMPERSONATE:
19061 				case SECURABLES:
19062 				case AUTHENTICATE:
19063 				case EXTERNAL:
19064 				case ACCESS:
19065 				case ADMINISTER:
19066 				case BULK:
19067 				case OPERATIONS:
19068 				case UNSAFE:
19069 				case SHUTDOWN:
19070 				case SCOPED:
19071 				case CONFIGURATION:
19072 				case DATASPACE:
19073 				case SERVICE:
19074 				case CERTIFICATE:
19075 				case CONTRACT:
19076 				case ENCRYPTION:
19077 				case MASTER:
19078 				case DATA:
19079 				case SOURCE:
19080 				case FILE:
19081 				case FORMAT:
19082 				case LIBRARY:
19083 				case FULLTEXT:
19084 				case MASK:
19085 				case UNMASK:
19086 				case MESSAGE:
19087 				case REMOTE:
19088 				case BINDING:
19089 				case ROUTE:
19090 				case SECURITY:
19091 				case POLICY:
19092 				case AGGREGATE:
19093 				case QUEUE:
19094 				case RULE:
19095 				case SYNONYM:
19096 				case COLLECTION:
19097 				case SCRIPT:
19098 				case KILL:
19099 				case BACKUP:
19100 				case LOG:
19101 				case SHOWPLAN:
19102 				case SUBSCRIBE:
19103 				case QUERY:
19104 				case NOTIFICATIONS:
19105 				case CHECKPOINT:
19106 				case SEQUENCE:
19107 				case ABORT_AFTER_WAIT:
19108 				case ALLOW_PAGE_LOCKS:
19109 				case ALLOW_ROW_LOCKS:
19110 				case ALL_SPARSE_COLUMNS:
19111 				case BUCKET_COUNT:
19112 				case COLUMNSTORE_ARCHIVE:
19113 				case COLUMN_ENCRYPTION_KEY:
19114 				case COLUMN_SET:
19115 				case COMPRESSION_DELAY:
19116 				case DATABASE_DEAULT:
19117 				case DATA_COMPRESSION:
19118 				case DATA_CONSISTENCY_CHECK:
19119 				case ENCRYPTION_TYPE:
19120 				case SYSTEM_TIME:
19121 				case SYSTEM_VERSIONING:
19122 				case TEXTIMAGE_ON:
19123 				case WAIT_AT_LOW_PRIORITY:
19124 				case STATISTICS_INCREMENTAL:
19125 				case STATISTICS_NORECOMPUTE:
19126 				case ROUND_ROBIN:
19127 				case SCHEMA_AND_DATA:
19128 				case SCHEMA_ONLY:
19129 				case SORT_IN_TEMPDB:
19130 				case IGNORE_DUP_KEY:
19131 				case IMPLICIT_TRANSACTIONS:
19132 				case MAX_DURATION:
19133 				case MEMORY_OPTIMIZED:
19134 				case MIGRATION_STATE:
19135 				case PAD_INDEX:
19136 				case REMOTE_DATA_ARCHIVE:
19137 				case FILESTREAM_ON:
19138 				case FILETABLE_COLLATE_FILENAME:
19139 				case FILETABLE_DIRECTORY:
19140 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
19141 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
19142 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
19143 				case FILTER_PREDICATE:
19144 				case HISTORY_RETENTION_PERIOD:
19145 				case HISTORY_TABLE:
19146 				case LOCK_ESCALATION:
19147 				case DROP_EXISTING:
19148 				case ROW_NUMBER:
19149 				case FIRST:
19150 				case DATETIME2:
19151 				case OUTPUT:
19152 				case INSERTED:
19153 				case DELETED:
19154 				case FILENAME:
19155 				case MAXSIZE:
19156 				case FILEGROWTH:
19157 				case UNLIMITED:
19158 				case KB:
19159 				case MB:
19160 				case GB:
19161 				case TB:
19162 				case MEMORY_OPTIMIZED_DATA:
19163 				case FILEGROUP:
19164 				case NON_TRANSACTED_ACCESS:
19165 				case DB_CHAINING:
19166 				case TRUSTWORTHY:
19167 				case FORWARD_ONLY:
19168 				case KEYSET:
19169 				case FAST_FORWARD:
19170 				case SCROLL_LOCKS:
19171 				case OPTIMISTIC:
19172 				case TYPE_WARNING:
19173 				case SCHEMABINDING:
19174 				case CALLER:
19175 				case OWNER:
19176 				case SNAPSHOT:
19177 				case REPEATABLE:
19178 				case SERIALIZABLE:
19179 				case NATIVE_COMPILATION:
19180 				case VIEW_METADATA:
19181 				case INSTEAD:
19182 				case APPEND:
19183 				case INCREMENT:
19184 				case CACHE:
19185 				case MINVALUE:
19186 				case MAXVALUE:
19187 				case RESTART:
19188 				case LOB_COMPACTION:
19189 				case COMPRESS_ALL_ROW_GROUPS:
19190 				case REORGANIZE:
19191 				case RESUME:
19192 				case PAUSE:
19193 				case ABORT:
19194 				case ACCELERATED_DATABASE_RECOVERY:
19195 				case PERSISTENT_VERSION_STORE_FILEGROUP:
19196 				case IMMEDIATE:
19197 				case NO_WAIT:
19198 				case TARGET_RECOVERY_TIME:
19199 				case SECONDS:
19200 				case HONOR_BROKER_PRIORITY:
19201 				case ERROR_BROKER_CONVERSATIONS:
19202 				case NEW_BROKER:
19203 				case DISABLE_BROKER:
19204 				case ENABLE_BROKER:
19205 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
19206 				case READ_COMMITTED_SNAPSHOT:
19207 				case ALLOW_SNAPSHOT_ISOLATION:
19208 				case RECURSIVE_TRIGGERS:
19209 				case QUOTED_IDENTIFIER:
19210 				case NUMERIC_ROUNDABORT:
19211 				case CONCAT_NULL_YIELDS_NULL:
19212 				case COMPATIBILITY_LEVEL:
19213 				case ARITHABORT:
19214 				case ANSI_WARNINGS:
19215 				case ANSI_PADDING:
19216 				case ANSI_NULLS:
19217 				case ANSI_NULL_DEFAULT:
19218 				case PAGE_VERIFY:
19219 				case CHECKSUM:
19220 				case TORN_PAGE_DETECTION:
19221 				case BULK_LOGGED:
19222 				case RECOVERY:
19223 				case TOTAL_EXECUTION_CPU_TIME_MS:
19224 				case TOTAL_COMPILE_CPU_TIME_MS:
19225 				case STALE_CAPTURE_POLICY_THRESHOLD:
19226 				case EXECUTION_COUNT:
19227 				case QUERY_CAPTURE_POLICY:
19228 				case WAIT_STATS_CAPTURE_MODE:
19229 				case MAX_PLANS_PER_QUERY:
19230 				case QUERY_CAPTURE_MODE:
19231 				case SIZE_BASED_CLEANUP_MODE:
19232 				case INTERVAL_LENGTH_MINUTES:
19233 				case MAX_STORAGE_SIZE_MB:
19234 				case DATA_FLUSH_INTERVAL_SECONDS:
19235 				case CLEANUP_POLICY:
19236 				case CUSTOM:
19237 				case STALE_QUERY_THRESHOLD_DAYS:
19238 				case OPERATION_MODE:
19239 				case QUERY_STORE:
19240 				case CURSOR_DEFAULT:
19241 				case GLOBAL:
19242 				case CURSOR_CLOSE_ON_COMMIT:
19243 				case HOURS:
19244 				case CHANGE_RETENTION:
19245 				case AUTO_CLEANUP:
19246 				case CHANGE_TRACKING:
19247 				case AUTOMATIC_TUNING:
19248 				case FORCE_LAST_GOOD_PLAN:
19249 				case AUTO_UPDATE_STATISTICS_ASYNC:
19250 				case AUTO_UPDATE_STATISTICS:
19251 				case AUTO_SHRINK:
19252 				case AUTO_CREATE_STATISTICS:
19253 				case INCREMENTAL:
19254 				case AUTO_CLOSE:
19255 				case DATA_RETENTION:
19256 				case TEMPORAL_HISTORY_RETENTION:
19257 				case EDITION:
19258 				case MIXED_PAGE_ALLOCATION:
19259 				case DISABLED:
19260 				case ALLOWED:
19261 				case HADR:
19262 				case MULTI_USER:
19263 				case RESTRICTED_USER:
19264 				case SINGLE_USER:
19265 				case OFFLINE:
19266 				case EMERGENCY:
19267 				case SUSPEND:
19268 				case DATE_CORRELATION_OPTIMIZATION:
19269 				case ELASTIC_POOL:
19270 				case SERVICE_OBJECTIVE:
19271 				case DATABASE_NAME:
19272 				case ALLOW_CONNECTIONS:
19273 				case GEO:
19274 				case NAMED:
19275 				case DATEFIRST:
19276 				case BACKUP_STORAGE_REDUNDANCY:
19277 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
19278 				case SECONDARY:
19279 				case FAILOVER:
19280 				case DEFAULT_FULLTEXT_LANGUAGE:
19281 				case DEFAULT_LANGUAGE:
19282 				case INLINE:
19283 				case NESTED_TRIGGERS:
19284 				case TRANSFORM_NOISE_WORDS:
19285 				case TWO_DIGIT_YEAR_CUTOFF:
19286 				case PERSISTENT_LOG_BUFFER:
19287 				case DIRECTORY_NAME:
19288 				case DATEFORMAT:
19289 				case DELAYED_DURABILITY:
19290 				case AUTHORIZATION:
19291 				case TRANSFER:
19292 				case PROVIDER:
19293 				case SEARCH:
19294 				case MEMBER:
19295 				case IDENTIFIER_:
19296 				case DELIMITED_IDENTIFIER_:
19297 					{
19298 					setState(2831);
19299 					functionCall();
19300 					}
19301 					break;
19302 				default:
19303 					throw new NoViableAltException(this);
19304 				}
19305 				setState(2834);
19306 				match(COMMA_);
19307 				}
19308 			}
19309 
19310 			setState(2837);
19311 			match(MIGRATION_STATE);
19312 			setState(2838);
19313 			match(EQ_);
19314 			setState(2839);
19315 			_la = _input.LA(1);
19316 			if ( !(((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & ((1L << (INBOUND - 269)) | (1L << (OUTBOUND - 269)) | (1L << (PAUSED - 269)))) != 0)) ) {
19317 			_errHandler.recoverInline(this);
19318 			}
19319 			else {
19320 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19321 				_errHandler.reportMatch(this);
19322 				consume();
19323 			}
19324 			}
19325 		}
19326 		catch (RecognitionException re) {
19327 			_localctx.exception = re;
19328 			_errHandler.reportError(this, re);
19329 			_errHandler.recover(this, re);
19330 		}
19331 		finally {
19332 			exitRule();
19333 		}
19334 		return _localctx;
19335 	}
19336 
19337 	public static class MigrationState_Context extends ParserRuleContext {
19338 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19339 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
19340 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19341 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
19342 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19343 		public MigrationState_Context(ParserRuleContext parent, int invokingState) {
19344 			super(parent, invokingState);
19345 		}
19346 		@Override public int getRuleIndex() { return RULE_migrationState_; }
19347 		@Override
19348 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19349 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMigrationState_(this);
19350 			else return visitor.visitChildren(this);
19351 		}
19352 	}
19353 
19354 	public final MigrationState_Context migrationState_() throws RecognitionException {
19355 		MigrationState_Context _localctx = new MigrationState_Context(_ctx, getState());
19356 		enterRule(_localctx, 406, RULE_migrationState_);
19357 		try {
19358 			enterOuterAlt(_localctx, 1);
19359 			{
19360 			setState(2841);
19361 			match(LP_);
19362 			setState(2842);
19363 			match(MIGRATION_STATE);
19364 			setState(2843);
19365 			match(EQ_);
19366 			setState(2844);
19367 			match(PAUSED);
19368 			setState(2845);
19369 			match(RP_);
19370 			}
19371 		}
19372 		catch (RecognitionException re) {
19373 			_localctx.exception = re;
19374 			_errHandler.reportError(this, re);
19375 			_errHandler.recover(this, re);
19376 		}
19377 		finally {
19378 			exitRule();
19379 		}
19380 		return _localctx;
19381 	}
19382 
19383 	public static class TableOperationOptionContext extends ParserRuleContext {
19384 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
19385 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19386 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19387 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
19388 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
19389 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
19390 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
19391 		public OnHistoryTableClauseContext onHistoryTableClause() {
19392 			return getRuleContext(OnHistoryTableClauseContext.class,0);
19393 		}
19394 		public TableOperationOptionContext(ParserRuleContext parent, int invokingState) {
19395 			super(parent, invokingState);
19396 		}
19397 		@Override public int getRuleIndex() { return RULE_tableOperationOption; }
19398 		@Override
19399 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19400 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOperationOption(this);
19401 			else return visitor.visitChildren(this);
19402 		}
19403 	}
19404 
19405 	public final TableOperationOptionContext tableOperationOption() throws RecognitionException {
19406 		TableOperationOptionContext _localctx = new TableOperationOptionContext(_ctx, getState());
19407 		enterRule(_localctx, 408, RULE_tableOperationOption);
19408 		int _la;
19409 		try {
19410 			setState(2859);
19411 			_errHandler.sync(this);
19412 			switch (_input.LA(1)) {
19413 			case MEMORY_OPTIMIZED:
19414 				enterOuterAlt(_localctx, 1);
19415 				{
19416 				{
19417 				setState(2847);
19418 				match(MEMORY_OPTIMIZED);
19419 				setState(2848);
19420 				match(EQ_);
19421 				setState(2849);
19422 				match(ON);
19423 				}
19424 				}
19425 				break;
19426 			case DURABILITY:
19427 				enterOuterAlt(_localctx, 2);
19428 				{
19429 				{
19430 				setState(2850);
19431 				match(DURABILITY);
19432 				setState(2851);
19433 				match(EQ_);
19434 				setState(2852);
19435 				_la = _input.LA(1);
19436 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
19437 				_errHandler.recoverInline(this);
19438 				}
19439 				else {
19440 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19441 					_errHandler.reportMatch(this);
19442 					consume();
19443 				}
19444 				}
19445 				}
19446 				break;
19447 			case SYSTEM_VERSIONING:
19448 				enterOuterAlt(_localctx, 3);
19449 				{
19450 				{
19451 				setState(2853);
19452 				match(SYSTEM_VERSIONING);
19453 				setState(2854);
19454 				match(EQ_);
19455 				setState(2855);
19456 				match(ON);
19457 				setState(2857);
19458 				_errHandler.sync(this);
19459 				_la = _input.LA(1);
19460 				if (_la==LP_) {
19461 					{
19462 					setState(2856);
19463 					onHistoryTableClause();
19464 					}
19465 				}
19466 
19467 				}
19468 				}
19469 				break;
19470 			default:
19471 				throw new NoViableAltException(this);
19472 			}
19473 		}
19474 		catch (RecognitionException re) {
19475 			_localctx.exception = re;
19476 			_errHandler.reportError(this, re);
19477 			_errHandler.recover(this, re);
19478 		}
19479 		finally {
19480 			exitRule();
19481 		}
19482 		return _localctx;
19483 	}
19484 
19485 	public static class DistributionOptionContext extends ParserRuleContext {
19486 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
19487 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19488 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
19489 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19490 		public ColumnNameContext columnName() {
19491 			return getRuleContext(ColumnNameContext.class,0);
19492 		}
19493 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19494 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
19495 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
19496 		public DistributionOptionContext(ParserRuleContext parent, int invokingState) {
19497 			super(parent, invokingState);
19498 		}
19499 		@Override public int getRuleIndex() { return RULE_distributionOption; }
19500 		@Override
19501 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19502 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistributionOption(this);
19503 			else return visitor.visitChildren(this);
19504 		}
19505 	}
19506 
19507 	public final DistributionOptionContext distributionOption() throws RecognitionException {
19508 		DistributionOptionContext _localctx = new DistributionOptionContext(_ctx, getState());
19509 		enterRule(_localctx, 410, RULE_distributionOption);
19510 		try {
19511 			enterOuterAlt(_localctx, 1);
19512 			{
19513 			setState(2861);
19514 			match(DISTRIBUTION);
19515 			setState(2862);
19516 			match(EQ_);
19517 			setState(2870);
19518 			_errHandler.sync(this);
19519 			switch (_input.LA(1)) {
19520 			case HASH:
19521 				{
19522 				setState(2863);
19523 				match(HASH);
19524 				setState(2864);
19525 				match(LP_);
19526 				setState(2865);
19527 				columnName();
19528 				setState(2866);
19529 				match(RP_);
19530 				}
19531 				break;
19532 			case ROUND_ROBIN:
19533 				{
19534 				setState(2868);
19535 				match(ROUND_ROBIN);
19536 				}
19537 				break;
19538 			case REPLICATE:
19539 				{
19540 				setState(2869);
19541 				match(REPLICATE);
19542 				}
19543 				break;
19544 			default:
19545 				throw new NoViableAltException(this);
19546 			}
19547 			}
19548 		}
19549 		catch (RecognitionException re) {
19550 			_localctx.exception = re;
19551 			_errHandler.reportError(this, re);
19552 			_errHandler.recover(this, re);
19553 		}
19554 		finally {
19555 			exitRule();
19556 		}
19557 		return _localctx;
19558 	}
19559 
19560 	public static class DataWareHouseTableOptionContext extends ParserRuleContext {
19561 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
19562 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
19563 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
19564 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
19565 		public ColumnNamesContext columnNames() {
19566 			return getRuleContext(ColumnNamesContext.class,0);
19567 		}
19568 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
19569 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19570 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19571 		public List<ColumnNameContext> columnName() {
19572 			return getRuleContexts(ColumnNameContext.class);
19573 		}
19574 		public ColumnNameContext columnName(int i) {
19575 			return getRuleContext(ColumnNameContext.class,i);
19576 		}
19577 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19578 		public TerminalNode COMMA_(int i) {
19579 			return getToken(SQLServerStatementParser.COMMA_, i);
19580 		}
19581 		public List<TerminalNode> ASC() { return getTokens(SQLServerStatementParser.ASC); }
19582 		public TerminalNode ASC(int i) {
19583 			return getToken(SQLServerStatementParser.ASC, i);
19584 		}
19585 		public List<TerminalNode> DESC() { return getTokens(SQLServerStatementParser.DESC); }
19586 		public TerminalNode DESC(int i) {
19587 			return getToken(SQLServerStatementParser.DESC, i);
19588 		}
19589 		public DataWareHouseTableOptionContext(ParserRuleContext parent, int invokingState) {
19590 			super(parent, invokingState);
19591 		}
19592 		@Override public int getRuleIndex() { return RULE_dataWareHouseTableOption; }
19593 		@Override
19594 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19595 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHouseTableOption(this);
19596 			else return visitor.visitChildren(this);
19597 		}
19598 	}
19599 
19600 	public final DataWareHouseTableOptionContext dataWareHouseTableOption() throws RecognitionException {
19601 		DataWareHouseTableOptionContext _localctx = new DataWareHouseTableOptionContext(_ctx, getState());
19602 		enterRule(_localctx, 412, RULE_dataWareHouseTableOption);
19603 		int _la;
19604 		try {
19605 			setState(2900);
19606 			_errHandler.sync(this);
19607 			switch ( getInterpreter().adaptivePredict(_input,248,_ctx) ) {
19608 			case 1:
19609 				enterOuterAlt(_localctx, 1);
19610 				{
19611 				setState(2872);
19612 				match(CLUSTERED);
19613 				setState(2873);
19614 				match(COLUMNSTORE);
19615 				setState(2874);
19616 				match(INDEX);
19617 				}
19618 				break;
19619 			case 2:
19620 				enterOuterAlt(_localctx, 2);
19621 				{
19622 				setState(2875);
19623 				match(CLUSTERED);
19624 				setState(2876);
19625 				match(COLUMNSTORE);
19626 				setState(2877);
19627 				match(INDEX);
19628 				setState(2878);
19629 				match(ORDER);
19630 				setState(2879);
19631 				columnNames();
19632 				}
19633 				break;
19634 			case 3:
19635 				enterOuterAlt(_localctx, 3);
19636 				{
19637 				setState(2880);
19638 				match(HEAP);
19639 				}
19640 				break;
19641 			case 4:
19642 				enterOuterAlt(_localctx, 4);
19643 				{
19644 				setState(2881);
19645 				match(CLUSTERED);
19646 				setState(2882);
19647 				match(INDEX);
19648 				setState(2883);
19649 				match(LP_);
19650 				{
19651 				setState(2884);
19652 				columnName();
19653 				setState(2886);
19654 				_errHandler.sync(this);
19655 				_la = _input.LA(1);
19656 				if (_la==ASC || _la==DESC) {
19657 					{
19658 					setState(2885);
19659 					_la = _input.LA(1);
19660 					if ( !(_la==ASC || _la==DESC) ) {
19661 					_errHandler.recoverInline(this);
19662 					}
19663 					else {
19664 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19665 						_errHandler.reportMatch(this);
19666 						consume();
19667 					}
19668 					}
19669 				}
19670 
19671 				}
19672 				setState(2895);
19673 				_errHandler.sync(this);
19674 				_la = _input.LA(1);
19675 				while (_la==COMMA_) {
19676 					{
19677 					{
19678 					setState(2888);
19679 					match(COMMA_);
19680 					{
19681 					setState(2889);
19682 					columnName();
19683 					setState(2891);
19684 					_errHandler.sync(this);
19685 					_la = _input.LA(1);
19686 					if (_la==ASC || _la==DESC) {
19687 						{
19688 						setState(2890);
19689 						_la = _input.LA(1);
19690 						if ( !(_la==ASC || _la==DESC) ) {
19691 						_errHandler.recoverInline(this);
19692 						}
19693 						else {
19694 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19695 							_errHandler.reportMatch(this);
19696 							consume();
19697 						}
19698 						}
19699 					}
19700 
19701 					}
19702 					}
19703 					}
19704 					setState(2897);
19705 					_errHandler.sync(this);
19706 					_la = _input.LA(1);
19707 				}
19708 				setState(2898);
19709 				match(RP_);
19710 				}
19711 				break;
19712 			}
19713 		}
19714 		catch (RecognitionException re) {
19715 			_localctx.exception = re;
19716 			_errHandler.reportError(this, re);
19717 			_errHandler.recover(this, re);
19718 		}
19719 		finally {
19720 			exitRule();
19721 		}
19722 		return _localctx;
19723 	}
19724 
19725 	public static class DataWareHousePartitionOptionContext extends ParserRuleContext {
19726 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
19727 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
19728 		public TerminalNode LP_(int i) {
19729 			return getToken(SQLServerStatementParser.LP_, i);
19730 		}
19731 		public ColumnNameContext columnName() {
19732 			return getRuleContext(ColumnNameContext.class,0);
19733 		}
19734 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
19735 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
19736 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
19737 		public List<SimpleExprContext> simpleExpr() {
19738 			return getRuleContexts(SimpleExprContext.class);
19739 		}
19740 		public SimpleExprContext simpleExpr(int i) {
19741 			return getRuleContext(SimpleExprContext.class,i);
19742 		}
19743 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
19744 		public TerminalNode RP_(int i) {
19745 			return getToken(SQLServerStatementParser.RP_, i);
19746 		}
19747 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19748 		public TerminalNode COMMA_(int i) {
19749 			return getToken(SQLServerStatementParser.COMMA_, i);
19750 		}
19751 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
19752 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
19753 		public DataWareHousePartitionOptionContext(ParserRuleContext parent, int invokingState) {
19754 			super(parent, invokingState);
19755 		}
19756 		@Override public int getRuleIndex() { return RULE_dataWareHousePartitionOption; }
19757 		@Override
19758 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19759 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHousePartitionOption(this);
19760 			else return visitor.visitChildren(this);
19761 		}
19762 	}
19763 
19764 	public final DataWareHousePartitionOptionContext dataWareHousePartitionOption() throws RecognitionException {
19765 		DataWareHousePartitionOptionContext _localctx = new DataWareHousePartitionOptionContext(_ctx, getState());
19766 		enterRule(_localctx, 414, RULE_dataWareHousePartitionOption);
19767 		int _la;
19768 		try {
19769 			enterOuterAlt(_localctx, 1);
19770 			{
19771 			{
19772 			setState(2902);
19773 			match(PARTITION);
19774 			setState(2903);
19775 			match(LP_);
19776 			setState(2904);
19777 			columnName();
19778 			setState(2905);
19779 			match(RANGE);
19780 			setState(2907);
19781 			_errHandler.sync(this);
19782 			_la = _input.LA(1);
19783 			if (_la==LEFT || _la==RIGHT) {
19784 				{
19785 				setState(2906);
19786 				_la = _input.LA(1);
19787 				if ( !(_la==LEFT || _la==RIGHT) ) {
19788 				_errHandler.recoverInline(this);
19789 				}
19790 				else {
19791 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19792 					_errHandler.reportMatch(this);
19793 					consume();
19794 				}
19795 				}
19796 			}
19797 
19798 			setState(2909);
19799 			match(FOR);
19800 			setState(2910);
19801 			match(VALUES);
19802 			setState(2911);
19803 			match(LP_);
19804 			setState(2912);
19805 			simpleExpr(0);
19806 			setState(2917);
19807 			_errHandler.sync(this);
19808 			_la = _input.LA(1);
19809 			while (_la==COMMA_) {
19810 				{
19811 				{
19812 				setState(2913);
19813 				match(COMMA_);
19814 				setState(2914);
19815 				simpleExpr(0);
19816 				}
19817 				}
19818 				setState(2919);
19819 				_errHandler.sync(this);
19820 				_la = _input.LA(1);
19821 			}
19822 			setState(2920);
19823 			match(RP_);
19824 			setState(2921);
19825 			match(RP_);
19826 			}
19827 			}
19828 		}
19829 		catch (RecognitionException re) {
19830 			_localctx.exception = re;
19831 			_errHandler.reportError(this, re);
19832 			_errHandler.recover(this, re);
19833 		}
19834 		finally {
19835 			exitRule();
19836 		}
19837 		return _localctx;
19838 	}
19839 
19840 	public static class CreateIndexSpecificationContext extends ParserRuleContext {
19841 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
19842 		public ClusterOptionContext clusterOption() {
19843 			return getRuleContext(ClusterOptionContext.class,0);
19844 		}
19845 		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
19846 			super(parent, invokingState);
19847 		}
19848 		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
19849 		@Override
19850 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19851 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexSpecification(this);
19852 			else return visitor.visitChildren(this);
19853 		}
19854 	}
19855 
19856 	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
19857 		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
19858 		enterRule(_localctx, 416, RULE_createIndexSpecification);
19859 		int _la;
19860 		try {
19861 			enterOuterAlt(_localctx, 1);
19862 			{
19863 			setState(2924);
19864 			_errHandler.sync(this);
19865 			_la = _input.LA(1);
19866 			if (_la==UNIQUE) {
19867 				{
19868 				setState(2923);
19869 				match(UNIQUE);
19870 				}
19871 			}
19872 
19873 			setState(2927);
19874 			_errHandler.sync(this);
19875 			_la = _input.LA(1);
19876 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
19877 				{
19878 				setState(2926);
19879 				clusterOption();
19880 				}
19881 			}
19882 
19883 			}
19884 		}
19885 		catch (RecognitionException re) {
19886 			_localctx.exception = re;
19887 			_errHandler.reportError(this, re);
19888 			_errHandler.recover(this, re);
19889 		}
19890 		finally {
19891 			exitRule();
19892 		}
19893 		return _localctx;
19894 	}
19895 
19896 	public static class AlterDefinitionClauseContext extends ParserRuleContext {
19897 		public AddColumnSpecificationContext addColumnSpecification() {
19898 			return getRuleContext(AddColumnSpecificationContext.class,0);
19899 		}
19900 		public ModifyColumnSpecificationContext modifyColumnSpecification() {
19901 			return getRuleContext(ModifyColumnSpecificationContext.class,0);
19902 		}
19903 		public AlterDropContext alterDrop() {
19904 			return getRuleContext(AlterDropContext.class,0);
19905 		}
19906 		public AlterCheckConstraintContext alterCheckConstraint() {
19907 			return getRuleContext(AlterCheckConstraintContext.class,0);
19908 		}
19909 		public AlterTableTriggerContext alterTableTrigger() {
19910 			return getRuleContext(AlterTableTriggerContext.class,0);
19911 		}
19912 		public AlterSwitchContext alterSwitch() {
19913 			return getRuleContext(AlterSwitchContext.class,0);
19914 		}
19915 		public AlterSetContext alterSet() {
19916 			return getRuleContext(AlterSetContext.class,0);
19917 		}
19918 		public AlterTableOptionContext alterTableOption() {
19919 			return getRuleContext(AlterTableOptionContext.class,0);
19920 		}
19921 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
19922 		public AlterDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
19923 			super(parent, invokingState);
19924 		}
19925 		@Override public int getRuleIndex() { return RULE_alterDefinitionClause; }
19926 		@Override
19927 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19928 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDefinitionClause(this);
19929 			else return visitor.visitChildren(this);
19930 		}
19931 	}
19932 
19933 	public final AlterDefinitionClauseContext alterDefinitionClause() throws RecognitionException {
19934 		AlterDefinitionClauseContext _localctx = new AlterDefinitionClauseContext(_ctx, getState());
19935 		enterRule(_localctx, 418, RULE_alterDefinitionClause);
19936 		try {
19937 			setState(2938);
19938 			_errHandler.sync(this);
19939 			switch ( getInterpreter().adaptivePredict(_input,253,_ctx) ) {
19940 			case 1:
19941 				enterOuterAlt(_localctx, 1);
19942 				{
19943 				setState(2929);
19944 				addColumnSpecification();
19945 				}
19946 				break;
19947 			case 2:
19948 				enterOuterAlt(_localctx, 2);
19949 				{
19950 				setState(2930);
19951 				modifyColumnSpecification();
19952 				}
19953 				break;
19954 			case 3:
19955 				enterOuterAlt(_localctx, 3);
19956 				{
19957 				setState(2931);
19958 				alterDrop();
19959 				}
19960 				break;
19961 			case 4:
19962 				enterOuterAlt(_localctx, 4);
19963 				{
19964 				setState(2932);
19965 				alterCheckConstraint();
19966 				}
19967 				break;
19968 			case 5:
19969 				enterOuterAlt(_localctx, 5);
19970 				{
19971 				setState(2933);
19972 				alterTableTrigger();
19973 				}
19974 				break;
19975 			case 6:
19976 				enterOuterAlt(_localctx, 6);
19977 				{
19978 				setState(2934);
19979 				alterSwitch();
19980 				}
19981 				break;
19982 			case 7:
19983 				enterOuterAlt(_localctx, 7);
19984 				{
19985 				setState(2935);
19986 				alterSet();
19987 				}
19988 				break;
19989 			case 8:
19990 				enterOuterAlt(_localctx, 8);
19991 				{
19992 				setState(2936);
19993 				alterTableOption();
19994 				}
19995 				break;
19996 			case 9:
19997 				enterOuterAlt(_localctx, 9);
19998 				{
19999 				setState(2937);
20000 				match(REBUILD);
20001 				}
20002 				break;
20003 			}
20004 		}
20005 		catch (RecognitionException re) {
20006 			_localctx.exception = re;
20007 			_errHandler.reportError(this, re);
20008 			_errHandler.recover(this, re);
20009 		}
20010 		finally {
20011 			exitRule();
20012 		}
20013 		return _localctx;
20014 	}
20015 
20016 	public static class AddColumnSpecificationContext extends ParserRuleContext {
20017 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
20018 		public AlterColumnAddOptionsContext alterColumnAddOptions() {
20019 			return getRuleContext(AlterColumnAddOptionsContext.class,0);
20020 		}
20021 		public GeneratedColumnNamesClauseContext generatedColumnNamesClause() {
20022 			return getRuleContext(GeneratedColumnNamesClauseContext.class,0);
20023 		}
20024 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
20025 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
20026 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
20027 		public AddColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
20028 			super(parent, invokingState);
20029 		}
20030 		@Override public int getRuleIndex() { return RULE_addColumnSpecification; }
20031 		@Override
20032 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20033 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddColumnSpecification(this);
20034 			else return visitor.visitChildren(this);
20035 		}
20036 	}
20037 
20038 	public final AddColumnSpecificationContext addColumnSpecification() throws RecognitionException {
20039 		AddColumnSpecificationContext _localctx = new AddColumnSpecificationContext(_ctx, getState());
20040 		enterRule(_localctx, 420, RULE_addColumnSpecification);
20041 		int _la;
20042 		try {
20043 			enterOuterAlt(_localctx, 1);
20044 			{
20045 			setState(2942);
20046 			_errHandler.sync(this);
20047 			_la = _input.LA(1);
20048 			if (_la==WITH) {
20049 				{
20050 				setState(2940);
20051 				match(WITH);
20052 				setState(2941);
20053 				_la = _input.LA(1);
20054 				if ( !(_la==CHECK || _la==NOCHECK) ) {
20055 				_errHandler.recoverInline(this);
20056 				}
20057 				else {
20058 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20059 					_errHandler.reportMatch(this);
20060 					consume();
20061 				}
20062 				}
20063 			}
20064 
20065 			setState(2944);
20066 			match(ADD);
20067 			setState(2947);
20068 			_errHandler.sync(this);
20069 			switch ( getInterpreter().adaptivePredict(_input,255,_ctx) ) {
20070 			case 1:
20071 				{
20072 				setState(2945);
20073 				alterColumnAddOptions();
20074 				}
20075 				break;
20076 			case 2:
20077 				{
20078 				setState(2946);
20079 				generatedColumnNamesClause();
20080 				}
20081 				break;
20082 			}
20083 			}
20084 		}
20085 		catch (RecognitionException re) {
20086 			_localctx.exception = re;
20087 			_errHandler.reportError(this, re);
20088 			_errHandler.recover(this, re);
20089 		}
20090 		finally {
20091 			exitRule();
20092 		}
20093 		return _localctx;
20094 	}
20095 
20096 	public static class ModifyColumnSpecificationContext extends ParserRuleContext {
20097 		public AlterColumnOperationContext alterColumnOperation() {
20098 			return getRuleContext(AlterColumnOperationContext.class,0);
20099 		}
20100 		public DataTypeContext dataType() {
20101 			return getRuleContext(DataTypeContext.class,0);
20102 		}
20103 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
20104 		public CollationNameContext collationName() {
20105 			return getRuleContext(CollationNameContext.class,0);
20106 		}
20107 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
20108 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
20109 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
20110 		public ModifyColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
20111 			super(parent, invokingState);
20112 		}
20113 		@Override public int getRuleIndex() { return RULE_modifyColumnSpecification; }
20114 		@Override
20115 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20116 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitModifyColumnSpecification(this);
20117 			else return visitor.visitChildren(this);
20118 		}
20119 	}
20120 
20121 	public final ModifyColumnSpecificationContext modifyColumnSpecification() throws RecognitionException {
20122 		ModifyColumnSpecificationContext _localctx = new ModifyColumnSpecificationContext(_ctx, getState());
20123 		enterRule(_localctx, 422, RULE_modifyColumnSpecification);
20124 		int _la;
20125 		try {
20126 			enterOuterAlt(_localctx, 1);
20127 			{
20128 			setState(2949);
20129 			alterColumnOperation();
20130 			setState(2950);
20131 			dataType();
20132 			setState(2953);
20133 			_errHandler.sync(this);
20134 			_la = _input.LA(1);
20135 			if (_la==COLLATE) {
20136 				{
20137 				setState(2951);
20138 				match(COLLATE);
20139 				setState(2952);
20140 				collationName();
20141 				}
20142 			}
20143 
20144 			setState(2958);
20145 			_errHandler.sync(this);
20146 			switch (_input.LA(1)) {
20147 			case NULL:
20148 				{
20149 				setState(2955);
20150 				match(NULL);
20151 				}
20152 				break;
20153 			case NOT:
20154 				{
20155 				setState(2956);
20156 				match(NOT);
20157 				setState(2957);
20158 				match(NULL);
20159 				}
20160 				break;
20161 			case EOF:
20162 			case COMMA_:
20163 			case SEMI_:
20164 			case SELECT:
20165 			case INSERT:
20166 			case UPDATE:
20167 			case DELETE:
20168 			case CREATE:
20169 			case ALTER:
20170 			case DROP:
20171 			case TRUNCATE:
20172 			case SET:
20173 			case WITH:
20174 			case DECLARE:
20175 			case RETURN:
20176 			case END:
20177 			case SPARSE:
20178 				break;
20179 			default:
20180 				break;
20181 			}
20182 			setState(2961);
20183 			_errHandler.sync(this);
20184 			_la = _input.LA(1);
20185 			if (_la==SPARSE) {
20186 				{
20187 				setState(2960);
20188 				match(SPARSE);
20189 				}
20190 			}
20191 
20192 			}
20193 		}
20194 		catch (RecognitionException re) {
20195 			_localctx.exception = re;
20196 			_errHandler.reportError(this, re);
20197 			_errHandler.recover(this, re);
20198 		}
20199 		finally {
20200 			exitRule();
20201 		}
20202 		return _localctx;
20203 	}
20204 
20205 	public static class AlterColumnOperationContext extends ParserRuleContext {
20206 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
20207 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
20208 		public ColumnNameContext columnName() {
20209 			return getRuleContext(ColumnNameContext.class,0);
20210 		}
20211 		public AlterColumnOperationContext(ParserRuleContext parent, int invokingState) {
20212 			super(parent, invokingState);
20213 		}
20214 		@Override public int getRuleIndex() { return RULE_alterColumnOperation; }
20215 		@Override
20216 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20217 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnOperation(this);
20218 			else return visitor.visitChildren(this);
20219 		}
20220 	}
20221 
20222 	public final AlterColumnOperationContext alterColumnOperation() throws RecognitionException {
20223 		AlterColumnOperationContext _localctx = new AlterColumnOperationContext(_ctx, getState());
20224 		enterRule(_localctx, 424, RULE_alterColumnOperation);
20225 		try {
20226 			enterOuterAlt(_localctx, 1);
20227 			{
20228 			setState(2963);
20229 			match(ALTER);
20230 			setState(2964);
20231 			match(COLUMN);
20232 			setState(2965);
20233 			columnName();
20234 			}
20235 		}
20236 		catch (RecognitionException re) {
20237 			_localctx.exception = re;
20238 			_errHandler.reportError(this, re);
20239 			_errHandler.recover(this, re);
20240 		}
20241 		finally {
20242 			exitRule();
20243 		}
20244 		return _localctx;
20245 	}
20246 
20247 	public static class AlterColumnAddOptionsContext extends ParserRuleContext {
20248 		public List<AlterColumnAddOptionContext> alterColumnAddOption() {
20249 			return getRuleContexts(AlterColumnAddOptionContext.class);
20250 		}
20251 		public AlterColumnAddOptionContext alterColumnAddOption(int i) {
20252 			return getRuleContext(AlterColumnAddOptionContext.class,i);
20253 		}
20254 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20255 		public TerminalNode COMMA_(int i) {
20256 			return getToken(SQLServerStatementParser.COMMA_, i);
20257 		}
20258 		public AlterColumnAddOptionsContext(ParserRuleContext parent, int invokingState) {
20259 			super(parent, invokingState);
20260 		}
20261 		@Override public int getRuleIndex() { return RULE_alterColumnAddOptions; }
20262 		@Override
20263 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20264 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOptions(this);
20265 			else return visitor.visitChildren(this);
20266 		}
20267 	}
20268 
20269 	public final AlterColumnAddOptionsContext alterColumnAddOptions() throws RecognitionException {
20270 		AlterColumnAddOptionsContext _localctx = new AlterColumnAddOptionsContext(_ctx, getState());
20271 		enterRule(_localctx, 426, RULE_alterColumnAddOptions);
20272 		try {
20273 			int _alt;
20274 			enterOuterAlt(_localctx, 1);
20275 			{
20276 			setState(2967);
20277 			alterColumnAddOption();
20278 			setState(2972);
20279 			_errHandler.sync(this);
20280 			_alt = getInterpreter().adaptivePredict(_input,259,_ctx);
20281 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
20282 				if ( _alt==1 ) {
20283 					{
20284 					{
20285 					setState(2968);
20286 					match(COMMA_);
20287 					setState(2969);
20288 					alterColumnAddOption();
20289 					}
20290 					} 
20291 				}
20292 				setState(2974);
20293 				_errHandler.sync(this);
20294 				_alt = getInterpreter().adaptivePredict(_input,259,_ctx);
20295 			}
20296 			}
20297 		}
20298 		catch (RecognitionException re) {
20299 			_localctx.exception = re;
20300 			_errHandler.reportError(this, re);
20301 			_errHandler.recover(this, re);
20302 		}
20303 		finally {
20304 			exitRule();
20305 		}
20306 		return _localctx;
20307 	}
20308 
20309 	public static class AlterColumnAddOptionContext extends ParserRuleContext {
20310 		public ColumnDefinitionContext columnDefinition() {
20311 			return getRuleContext(ColumnDefinitionContext.class,0);
20312 		}
20313 		public ComputedColumnDefinitionContext computedColumnDefinition() {
20314 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
20315 		}
20316 		public ColumnSetDefinitionContext columnSetDefinition() {
20317 			return getRuleContext(ColumnSetDefinitionContext.class,0);
20318 		}
20319 		public TableConstraintContext tableConstraint() {
20320 			return getRuleContext(TableConstraintContext.class,0);
20321 		}
20322 		public AlterTableTableIndexContext alterTableTableIndex() {
20323 			return getRuleContext(AlterTableTableIndexContext.class,0);
20324 		}
20325 		public ConstraintForColumnContext constraintForColumn() {
20326 			return getRuleContext(ConstraintForColumnContext.class,0);
20327 		}
20328 		public AlterColumnAddOptionContext(ParserRuleContext parent, int invokingState) {
20329 			super(parent, invokingState);
20330 		}
20331 		@Override public int getRuleIndex() { return RULE_alterColumnAddOption; }
20332 		@Override
20333 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20334 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOption(this);
20335 			else return visitor.visitChildren(this);
20336 		}
20337 	}
20338 
20339 	public final AlterColumnAddOptionContext alterColumnAddOption() throws RecognitionException {
20340 		AlterColumnAddOptionContext _localctx = new AlterColumnAddOptionContext(_ctx, getState());
20341 		enterRule(_localctx, 428, RULE_alterColumnAddOption);
20342 		try {
20343 			setState(2981);
20344 			_errHandler.sync(this);
20345 			switch ( getInterpreter().adaptivePredict(_input,260,_ctx) ) {
20346 			case 1:
20347 				enterOuterAlt(_localctx, 1);
20348 				{
20349 				setState(2975);
20350 				columnDefinition();
20351 				}
20352 				break;
20353 			case 2:
20354 				enterOuterAlt(_localctx, 2);
20355 				{
20356 				setState(2976);
20357 				computedColumnDefinition();
20358 				}
20359 				break;
20360 			case 3:
20361 				enterOuterAlt(_localctx, 3);
20362 				{
20363 				setState(2977);
20364 				columnSetDefinition();
20365 				}
20366 				break;
20367 			case 4:
20368 				enterOuterAlt(_localctx, 4);
20369 				{
20370 				setState(2978);
20371 				tableConstraint();
20372 				}
20373 				break;
20374 			case 5:
20375 				enterOuterAlt(_localctx, 5);
20376 				{
20377 				setState(2979);
20378 				alterTableTableIndex();
20379 				}
20380 				break;
20381 			case 6:
20382 				enterOuterAlt(_localctx, 6);
20383 				{
20384 				setState(2980);
20385 				constraintForColumn();
20386 				}
20387 				break;
20388 			}
20389 		}
20390 		catch (RecognitionException re) {
20391 			_localctx.exception = re;
20392 			_errHandler.reportError(this, re);
20393 			_errHandler.recover(this, re);
20394 		}
20395 		finally {
20396 			exitRule();
20397 		}
20398 		return _localctx;
20399 	}
20400 
20401 	public static class ConstraintForColumnContext extends ParserRuleContext {
20402 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
20403 		public SimpleExprContext simpleExpr() {
20404 			return getRuleContext(SimpleExprContext.class,0);
20405 		}
20406 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
20407 		public ColumnNameContext columnName() {
20408 			return getRuleContext(ColumnNameContext.class,0);
20409 		}
20410 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
20411 		public ConstraintNameContext constraintName() {
20412 			return getRuleContext(ConstraintNameContext.class,0);
20413 		}
20414 		public ConstraintForColumnContext(ParserRuleContext parent, int invokingState) {
20415 			super(parent, invokingState);
20416 		}
20417 		@Override public int getRuleIndex() { return RULE_constraintForColumn; }
20418 		@Override
20419 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20420 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintForColumn(this);
20421 			else return visitor.visitChildren(this);
20422 		}
20423 	}
20424 
20425 	public final ConstraintForColumnContext constraintForColumn() throws RecognitionException {
20426 		ConstraintForColumnContext _localctx = new ConstraintForColumnContext(_ctx, getState());
20427 		enterRule(_localctx, 430, RULE_constraintForColumn);
20428 		int _la;
20429 		try {
20430 			enterOuterAlt(_localctx, 1);
20431 			{
20432 			setState(2985);
20433 			_errHandler.sync(this);
20434 			_la = _input.LA(1);
20435 			if (_la==CONSTRAINT) {
20436 				{
20437 				setState(2983);
20438 				match(CONSTRAINT);
20439 				setState(2984);
20440 				constraintName();
20441 				}
20442 			}
20443 
20444 			setState(2987);
20445 			match(DEFAULT);
20446 			setState(2988);
20447 			simpleExpr(0);
20448 			setState(2989);
20449 			match(FOR);
20450 			setState(2990);
20451 			columnName();
20452 			}
20453 		}
20454 		catch (RecognitionException re) {
20455 			_localctx.exception = re;
20456 			_errHandler.reportError(this, re);
20457 			_errHandler.recover(this, re);
20458 		}
20459 		finally {
20460 			exitRule();
20461 		}
20462 		return _localctx;
20463 	}
20464 
20465 	public static class GeneratedColumnNamesClauseContext extends ParserRuleContext {
20466 		public GeneratedColumnNameClauseContext generatedColumnNameClause() {
20467 			return getRuleContext(GeneratedColumnNameClauseContext.class,0);
20468 		}
20469 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
20470 		public PeriodClauseContext periodClause() {
20471 			return getRuleContext(PeriodClauseContext.class,0);
20472 		}
20473 		public GeneratedColumnNamesClauseContext(ParserRuleContext parent, int invokingState) {
20474 			super(parent, invokingState);
20475 		}
20476 		@Override public int getRuleIndex() { return RULE_generatedColumnNamesClause; }
20477 		@Override
20478 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20479 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNamesClause(this);
20480 			else return visitor.visitChildren(this);
20481 		}
20482 	}
20483 
20484 	public final GeneratedColumnNamesClauseContext generatedColumnNamesClause() throws RecognitionException {
20485 		GeneratedColumnNamesClauseContext _localctx = new GeneratedColumnNamesClauseContext(_ctx, getState());
20486 		enterRule(_localctx, 432, RULE_generatedColumnNamesClause);
20487 		try {
20488 			setState(3000);
20489 			_errHandler.sync(this);
20490 			switch ( getInterpreter().adaptivePredict(_input,262,_ctx) ) {
20491 			case 1:
20492 				enterOuterAlt(_localctx, 1);
20493 				{
20494 				setState(2992);
20495 				generatedColumnNameClause();
20496 				setState(2993);
20497 				match(COMMA_);
20498 				setState(2994);
20499 				periodClause();
20500 				}
20501 				break;
20502 			case 2:
20503 				enterOuterAlt(_localctx, 2);
20504 				{
20505 				setState(2996);
20506 				periodClause();
20507 				setState(2997);
20508 				match(COMMA_);
20509 				setState(2998);
20510 				generatedColumnNameClause();
20511 				}
20512 				break;
20513 			}
20514 		}
20515 		catch (RecognitionException re) {
20516 			_localctx.exception = re;
20517 			_errHandler.reportError(this, re);
20518 			_errHandler.recover(this, re);
20519 		}
20520 		finally {
20521 			exitRule();
20522 		}
20523 		return _localctx;
20524 	}
20525 
20526 	public static class GeneratedColumnNameClauseContext extends ParserRuleContext {
20527 		public List<GeneratedColumnNameContext> generatedColumnName() {
20528 			return getRuleContexts(GeneratedColumnNameContext.class);
20529 		}
20530 		public GeneratedColumnNameContext generatedColumnName(int i) {
20531 			return getRuleContext(GeneratedColumnNameContext.class,i);
20532 		}
20533 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
20534 		public SimpleExprContext simpleExpr() {
20535 			return getRuleContext(SimpleExprContext.class,0);
20536 		}
20537 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
20538 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
20539 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
20540 		public GeneratedColumnNameClauseContext(ParserRuleContext parent, int invokingState) {
20541 			super(parent, invokingState);
20542 		}
20543 		@Override public int getRuleIndex() { return RULE_generatedColumnNameClause; }
20544 		@Override
20545 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20546 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNameClause(this);
20547 			else return visitor.visitChildren(this);
20548 		}
20549 	}
20550 
20551 	public final GeneratedColumnNameClauseContext generatedColumnNameClause() throws RecognitionException {
20552 		GeneratedColumnNameClauseContext _localctx = new GeneratedColumnNameClauseContext(_ctx, getState());
20553 		enterRule(_localctx, 434, RULE_generatedColumnNameClause);
20554 		int _la;
20555 		try {
20556 			enterOuterAlt(_localctx, 1);
20557 			{
20558 			setState(3002);
20559 			generatedColumnName();
20560 			setState(3003);
20561 			match(DEFAULT);
20562 			setState(3004);
20563 			simpleExpr(0);
20564 			setState(3007);
20565 			_errHandler.sync(this);
20566 			_la = _input.LA(1);
20567 			if (_la==WITH) {
20568 				{
20569 				setState(3005);
20570 				match(WITH);
20571 				setState(3006);
20572 				match(VALUES);
20573 				}
20574 			}
20575 
20576 			setState(3009);
20577 			match(COMMA_);
20578 			setState(3010);
20579 			generatedColumnName();
20580 			}
20581 		}
20582 		catch (RecognitionException re) {
20583 			_localctx.exception = re;
20584 			_errHandler.reportError(this, re);
20585 			_errHandler.recover(this, re);
20586 		}
20587 		finally {
20588 			exitRule();
20589 		}
20590 		return _localctx;
20591 	}
20592 
20593 	public static class GeneratedColumnNameContext extends ParserRuleContext {
20594 		public ColumnNameContext columnName() {
20595 			return getRuleContext(ColumnNameContext.class,0);
20596 		}
20597 		public DataTypeNameContext dataTypeName() {
20598 			return getRuleContext(DataTypeNameContext.class,0);
20599 		}
20600 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
20601 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
20602 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
20603 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
20604 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
20605 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
20606 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
20607 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
20608 		public IgnoredIdentifierContext ignoredIdentifier() {
20609 			return getRuleContext(IgnoredIdentifierContext.class,0);
20610 		}
20611 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
20612 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
20613 		public GeneratedColumnNameContext(ParserRuleContext parent, int invokingState) {
20614 			super(parent, invokingState);
20615 		}
20616 		@Override public int getRuleIndex() { return RULE_generatedColumnName; }
20617 		@Override
20618 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20619 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnName(this);
20620 			else return visitor.visitChildren(this);
20621 		}
20622 	}
20623 
20624 	public final GeneratedColumnNameContext generatedColumnName() throws RecognitionException {
20625 		GeneratedColumnNameContext _localctx = new GeneratedColumnNameContext(_ctx, getState());
20626 		enterRule(_localctx, 436, RULE_generatedColumnName);
20627 		int _la;
20628 		try {
20629 			enterOuterAlt(_localctx, 1);
20630 			{
20631 			setState(3012);
20632 			columnName();
20633 			setState(3013);
20634 			dataTypeName();
20635 			setState(3014);
20636 			match(GENERATED);
20637 			setState(3015);
20638 			match(ALWAYS);
20639 			setState(3016);
20640 			match(AS);
20641 			setState(3017);
20642 			match(ROW);
20643 			setState(3019);
20644 			_errHandler.sync(this);
20645 			switch ( getInterpreter().adaptivePredict(_input,264,_ctx) ) {
20646 			case 1:
20647 				{
20648 				setState(3018);
20649 				_la = _input.LA(1);
20650 				if ( !(_la==START || _la==END) ) {
20651 				_errHandler.recoverInline(this);
20652 				}
20653 				else {
20654 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20655 					_errHandler.reportMatch(this);
20656 					consume();
20657 				}
20658 				}
20659 				break;
20660 			}
20661 			setState(3022);
20662 			_errHandler.sync(this);
20663 			_la = _input.LA(1);
20664 			if (_la==HIDDEN_) {
20665 				{
20666 				setState(3021);
20667 				match(HIDDEN_);
20668 				}
20669 			}
20670 
20671 			setState(3026);
20672 			_errHandler.sync(this);
20673 			_la = _input.LA(1);
20674 			if (_la==NOT) {
20675 				{
20676 				setState(3024);
20677 				match(NOT);
20678 				setState(3025);
20679 				match(NULL);
20680 				}
20681 			}
20682 
20683 			setState(3030);
20684 			_errHandler.sync(this);
20685 			_la = _input.LA(1);
20686 			if (_la==CONSTRAINT) {
20687 				{
20688 				setState(3028);
20689 				match(CONSTRAINT);
20690 				setState(3029);
20691 				ignoredIdentifier();
20692 				}
20693 			}
20694 
20695 			}
20696 		}
20697 		catch (RecognitionException re) {
20698 			_localctx.exception = re;
20699 			_errHandler.reportError(this, re);
20700 			_errHandler.recover(this, re);
20701 		}
20702 		finally {
20703 			exitRule();
20704 		}
20705 		return _localctx;
20706 	}
20707 
20708 	public static class AlterDropContext extends ParserRuleContext {
20709 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
20710 		public AlterTableDropConstraintContext alterTableDropConstraint() {
20711 			return getRuleContext(AlterTableDropConstraintContext.class,0);
20712 		}
20713 		public DropColumnSpecificationContext dropColumnSpecification() {
20714 			return getRuleContext(DropColumnSpecificationContext.class,0);
20715 		}
20716 		public DropIndexSpecificationContext dropIndexSpecification() {
20717 			return getRuleContext(DropIndexSpecificationContext.class,0);
20718 		}
20719 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
20720 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
20721 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
20722 		public AlterDropContext(ParserRuleContext parent, int invokingState) {
20723 			super(parent, invokingState);
20724 		}
20725 		@Override public int getRuleIndex() { return RULE_alterDrop; }
20726 		@Override
20727 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20728 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDrop(this);
20729 			else return visitor.visitChildren(this);
20730 		}
20731 	}
20732 
20733 	public final AlterDropContext alterDrop() throws RecognitionException {
20734 		AlterDropContext _localctx = new AlterDropContext(_ctx, getState());
20735 		enterRule(_localctx, 438, RULE_alterDrop);
20736 		try {
20737 			enterOuterAlt(_localctx, 1);
20738 			{
20739 			setState(3032);
20740 			match(DROP);
20741 			setState(3039);
20742 			_errHandler.sync(this);
20743 			switch ( getInterpreter().adaptivePredict(_input,268,_ctx) ) {
20744 			case 1:
20745 				{
20746 				setState(3033);
20747 				alterTableDropConstraint();
20748 				}
20749 				break;
20750 			case 2:
20751 				{
20752 				setState(3034);
20753 				dropColumnSpecification();
20754 				}
20755 				break;
20756 			case 3:
20757 				{
20758 				setState(3035);
20759 				dropIndexSpecification();
20760 				}
20761 				break;
20762 			case 4:
20763 				{
20764 				setState(3036);
20765 				match(PERIOD);
20766 				setState(3037);
20767 				match(FOR);
20768 				setState(3038);
20769 				match(SYSTEM_TIME);
20770 				}
20771 				break;
20772 			}
20773 			}
20774 		}
20775 		catch (RecognitionException re) {
20776 			_localctx.exception = re;
20777 			_errHandler.reportError(this, re);
20778 			_errHandler.recover(this, re);
20779 		}
20780 		finally {
20781 			exitRule();
20782 		}
20783 		return _localctx;
20784 	}
20785 
20786 	public static class AlterTableDropConstraintContext extends ParserRuleContext {
20787 		public List<DropConstraintNameContext> dropConstraintName() {
20788 			return getRuleContexts(DropConstraintNameContext.class);
20789 		}
20790 		public DropConstraintNameContext dropConstraintName(int i) {
20791 			return getRuleContext(DropConstraintNameContext.class,i);
20792 		}
20793 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
20794 		public IfExistsContext ifExists() {
20795 			return getRuleContext(IfExistsContext.class,0);
20796 		}
20797 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20798 		public TerminalNode COMMA_(int i) {
20799 			return getToken(SQLServerStatementParser.COMMA_, i);
20800 		}
20801 		public AlterTableDropConstraintContext(ParserRuleContext parent, int invokingState) {
20802 			super(parent, invokingState);
20803 		}
20804 		@Override public int getRuleIndex() { return RULE_alterTableDropConstraint; }
20805 		@Override
20806 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20807 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableDropConstraint(this);
20808 			else return visitor.visitChildren(this);
20809 		}
20810 	}
20811 
20812 	public final AlterTableDropConstraintContext alterTableDropConstraint() throws RecognitionException {
20813 		AlterTableDropConstraintContext _localctx = new AlterTableDropConstraintContext(_ctx, getState());
20814 		enterRule(_localctx, 440, RULE_alterTableDropConstraint);
20815 		int _la;
20816 		try {
20817 			int _alt;
20818 			enterOuterAlt(_localctx, 1);
20819 			{
20820 			setState(3042);
20821 			_errHandler.sync(this);
20822 			_la = _input.LA(1);
20823 			if (_la==CONSTRAINT) {
20824 				{
20825 				setState(3041);
20826 				match(CONSTRAINT);
20827 				}
20828 			}
20829 
20830 			setState(3045);
20831 			_errHandler.sync(this);
20832 			_la = _input.LA(1);
20833 			if (_la==IF) {
20834 				{
20835 				setState(3044);
20836 				ifExists();
20837 				}
20838 			}
20839 
20840 			setState(3047);
20841 			dropConstraintName();
20842 			setState(3052);
20843 			_errHandler.sync(this);
20844 			_alt = getInterpreter().adaptivePredict(_input,271,_ctx);
20845 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
20846 				if ( _alt==1 ) {
20847 					{
20848 					{
20849 					setState(3048);
20850 					match(COMMA_);
20851 					setState(3049);
20852 					dropConstraintName();
20853 					}
20854 					} 
20855 				}
20856 				setState(3054);
20857 				_errHandler.sync(this);
20858 				_alt = getInterpreter().adaptivePredict(_input,271,_ctx);
20859 			}
20860 			}
20861 		}
20862 		catch (RecognitionException re) {
20863 			_localctx.exception = re;
20864 			_errHandler.reportError(this, re);
20865 			_errHandler.recover(this, re);
20866 		}
20867 		finally {
20868 			exitRule();
20869 		}
20870 		return _localctx;
20871 	}
20872 
20873 	public static class DropConstraintNameContext extends ParserRuleContext {
20874 		public ConstraintNameContext constraintName() {
20875 			return getRuleContext(ConstraintNameContext.class,0);
20876 		}
20877 		public DropConstraintWithClauseContext dropConstraintWithClause() {
20878 			return getRuleContext(DropConstraintWithClauseContext.class,0);
20879 		}
20880 		public DropConstraintNameContext(ParserRuleContext parent, int invokingState) {
20881 			super(parent, invokingState);
20882 		}
20883 		@Override public int getRuleIndex() { return RULE_dropConstraintName; }
20884 		@Override
20885 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20886 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintName(this);
20887 			else return visitor.visitChildren(this);
20888 		}
20889 	}
20890 
20891 	public final DropConstraintNameContext dropConstraintName() throws RecognitionException {
20892 		DropConstraintNameContext _localctx = new DropConstraintNameContext(_ctx, getState());
20893 		enterRule(_localctx, 442, RULE_dropConstraintName);
20894 		try {
20895 			enterOuterAlt(_localctx, 1);
20896 			{
20897 			setState(3055);
20898 			constraintName();
20899 			setState(3057);
20900 			_errHandler.sync(this);
20901 			switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) {
20902 			case 1:
20903 				{
20904 				setState(3056);
20905 				dropConstraintWithClause();
20906 				}
20907 				break;
20908 			}
20909 			}
20910 		}
20911 		catch (RecognitionException re) {
20912 			_localctx.exception = re;
20913 			_errHandler.reportError(this, re);
20914 			_errHandler.recover(this, re);
20915 		}
20916 		finally {
20917 			exitRule();
20918 		}
20919 		return _localctx;
20920 	}
20921 
20922 	public static class DropConstraintWithClauseContext extends ParserRuleContext {
20923 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
20924 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20925 		public List<DropConstraintOptionContext> dropConstraintOption() {
20926 			return getRuleContexts(DropConstraintOptionContext.class);
20927 		}
20928 		public DropConstraintOptionContext dropConstraintOption(int i) {
20929 			return getRuleContext(DropConstraintOptionContext.class,i);
20930 		}
20931 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20932 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20933 		public TerminalNode COMMA_(int i) {
20934 			return getToken(SQLServerStatementParser.COMMA_, i);
20935 		}
20936 		public DropConstraintWithClauseContext(ParserRuleContext parent, int invokingState) {
20937 			super(parent, invokingState);
20938 		}
20939 		@Override public int getRuleIndex() { return RULE_dropConstraintWithClause; }
20940 		@Override
20941 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20942 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintWithClause(this);
20943 			else return visitor.visitChildren(this);
20944 		}
20945 	}
20946 
20947 	public final DropConstraintWithClauseContext dropConstraintWithClause() throws RecognitionException {
20948 		DropConstraintWithClauseContext _localctx = new DropConstraintWithClauseContext(_ctx, getState());
20949 		enterRule(_localctx, 444, RULE_dropConstraintWithClause);
20950 		int _la;
20951 		try {
20952 			enterOuterAlt(_localctx, 1);
20953 			{
20954 			setState(3059);
20955 			match(WITH);
20956 			setState(3060);
20957 			match(LP_);
20958 			setState(3061);
20959 			dropConstraintOption();
20960 			setState(3066);
20961 			_errHandler.sync(this);
20962 			_la = _input.LA(1);
20963 			while (_la==COMMA_) {
20964 				{
20965 				{
20966 				setState(3062);
20967 				match(COMMA_);
20968 				setState(3063);
20969 				dropConstraintOption();
20970 				}
20971 				}
20972 				setState(3068);
20973 				_errHandler.sync(this);
20974 				_la = _input.LA(1);
20975 			}
20976 			setState(3069);
20977 			match(RP_);
20978 			}
20979 		}
20980 		catch (RecognitionException re) {
20981 			_localctx.exception = re;
20982 			_errHandler.reportError(this, re);
20983 			_errHandler.recover(this, re);
20984 		}
20985 		finally {
20986 			exitRule();
20987 		}
20988 		return _localctx;
20989 	}
20990 
20991 	public static class DropConstraintOptionContext extends ParserRuleContext {
20992 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
20993 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20994 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
20995 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
20996 		public OnOffOptionContext onOffOption() {
20997 			return getRuleContext(OnOffOptionContext.class,0);
20998 		}
20999 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
21000 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
21001 		public SchemaNameContext schemaName() {
21002 			return getRuleContext(SchemaNameContext.class,0);
21003 		}
21004 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21005 		public ColumnNameContext columnName() {
21006 			return getRuleContext(ColumnNameContext.class,0);
21007 		}
21008 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21009 		public IgnoredIdentifierContext ignoredIdentifier() {
21010 			return getRuleContext(IgnoredIdentifierContext.class,0);
21011 		}
21012 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
21013 		public DropConstraintOptionContext(ParserRuleContext parent, int invokingState) {
21014 			super(parent, invokingState);
21015 		}
21016 		@Override public int getRuleIndex() { return RULE_dropConstraintOption; }
21017 		@Override
21018 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21019 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintOption(this);
21020 			else return visitor.visitChildren(this);
21021 		}
21022 	}
21023 
21024 	public final DropConstraintOptionContext dropConstraintOption() throws RecognitionException {
21025 		DropConstraintOptionContext _localctx = new DropConstraintOptionContext(_ctx, getState());
21026 		enterRule(_localctx, 446, RULE_dropConstraintOption);
21027 		try {
21028 			enterOuterAlt(_localctx, 1);
21029 			{
21030 			setState(3088);
21031 			_errHandler.sync(this);
21032 			switch (_input.LA(1)) {
21033 			case MAXDOP:
21034 				{
21035 				setState(3071);
21036 				match(MAXDOP);
21037 				setState(3072);
21038 				match(EQ_);
21039 				setState(3073);
21040 				match(NUMBER_);
21041 				}
21042 				break;
21043 			case ONLINE:
21044 				{
21045 				setState(3074);
21046 				match(ONLINE);
21047 				setState(3075);
21048 				match(EQ_);
21049 				setState(3076);
21050 				onOffOption();
21051 				}
21052 				break;
21053 			case MOVE:
21054 				{
21055 				setState(3077);
21056 				match(MOVE);
21057 				setState(3078);
21058 				match(TO);
21059 				setState(3086);
21060 				_errHandler.sync(this);
21061 				switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) {
21062 				case 1:
21063 					{
21064 					setState(3079);
21065 					schemaName();
21066 					setState(3080);
21067 					match(LP_);
21068 					setState(3081);
21069 					columnName();
21070 					setState(3082);
21071 					match(RP_);
21072 					}
21073 					break;
21074 				case 2:
21075 					{
21076 					setState(3084);
21077 					ignoredIdentifier();
21078 					}
21079 					break;
21080 				case 3:
21081 					{
21082 					setState(3085);
21083 					match(STRING_);
21084 					}
21085 					break;
21086 				}
21087 				}
21088 				break;
21089 			default:
21090 				throw new NoViableAltException(this);
21091 			}
21092 			}
21093 		}
21094 		catch (RecognitionException re) {
21095 			_localctx.exception = re;
21096 			_errHandler.reportError(this, re);
21097 			_errHandler.recover(this, re);
21098 		}
21099 		finally {
21100 			exitRule();
21101 		}
21102 		return _localctx;
21103 	}
21104 
21105 	public static class OnOffOptionContext extends ParserRuleContext {
21106 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
21107 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
21108 		public OnOffOptionContext(ParserRuleContext parent, int invokingState) {
21109 			super(parent, invokingState);
21110 		}
21111 		@Override public int getRuleIndex() { return RULE_onOffOption; }
21112 		@Override
21113 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21114 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnOffOption(this);
21115 			else return visitor.visitChildren(this);
21116 		}
21117 	}
21118 
21119 	public final OnOffOptionContext onOffOption() throws RecognitionException {
21120 		OnOffOptionContext _localctx = new OnOffOptionContext(_ctx, getState());
21121 		enterRule(_localctx, 448, RULE_onOffOption);
21122 		int _la;
21123 		try {
21124 			enterOuterAlt(_localctx, 1);
21125 			{
21126 			setState(3090);
21127 			_la = _input.LA(1);
21128 			if ( !(_la==ON || _la==OFF) ) {
21129 			_errHandler.recoverInline(this);
21130 			}
21131 			else {
21132 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21133 				_errHandler.reportMatch(this);
21134 				consume();
21135 			}
21136 			}
21137 		}
21138 		catch (RecognitionException re) {
21139 			_localctx.exception = re;
21140 			_errHandler.reportError(this, re);
21141 			_errHandler.recover(this, re);
21142 		}
21143 		finally {
21144 			exitRule();
21145 		}
21146 		return _localctx;
21147 	}
21148 
21149 	public static class DropColumnSpecificationContext extends ParserRuleContext {
21150 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
21151 		public List<ColumnNameContext> columnName() {
21152 			return getRuleContexts(ColumnNameContext.class);
21153 		}
21154 		public ColumnNameContext columnName(int i) {
21155 			return getRuleContext(ColumnNameContext.class,i);
21156 		}
21157 		public IfExistsContext ifExists() {
21158 			return getRuleContext(IfExistsContext.class,0);
21159 		}
21160 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21161 		public TerminalNode COMMA_(int i) {
21162 			return getToken(SQLServerStatementParser.COMMA_, i);
21163 		}
21164 		public DropColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
21165 			super(parent, invokingState);
21166 		}
21167 		@Override public int getRuleIndex() { return RULE_dropColumnSpecification; }
21168 		@Override
21169 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21170 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropColumnSpecification(this);
21171 			else return visitor.visitChildren(this);
21172 		}
21173 	}
21174 
21175 	public final DropColumnSpecificationContext dropColumnSpecification() throws RecognitionException {
21176 		DropColumnSpecificationContext _localctx = new DropColumnSpecificationContext(_ctx, getState());
21177 		enterRule(_localctx, 450, RULE_dropColumnSpecification);
21178 		int _la;
21179 		try {
21180 			int _alt;
21181 			enterOuterAlt(_localctx, 1);
21182 			{
21183 			setState(3092);
21184 			match(COLUMN);
21185 			setState(3094);
21186 			_errHandler.sync(this);
21187 			_la = _input.LA(1);
21188 			if (_la==IF) {
21189 				{
21190 				setState(3093);
21191 				ifExists();
21192 				}
21193 			}
21194 
21195 			setState(3096);
21196 			columnName();
21197 			setState(3101);
21198 			_errHandler.sync(this);
21199 			_alt = getInterpreter().adaptivePredict(_input,277,_ctx);
21200 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21201 				if ( _alt==1 ) {
21202 					{
21203 					{
21204 					setState(3097);
21205 					match(COMMA_);
21206 					setState(3098);
21207 					columnName();
21208 					}
21209 					} 
21210 				}
21211 				setState(3103);
21212 				_errHandler.sync(this);
21213 				_alt = getInterpreter().adaptivePredict(_input,277,_ctx);
21214 			}
21215 			}
21216 		}
21217 		catch (RecognitionException re) {
21218 			_localctx.exception = re;
21219 			_errHandler.reportError(this, re);
21220 			_errHandler.recover(this, re);
21221 		}
21222 		finally {
21223 			exitRule();
21224 		}
21225 		return _localctx;
21226 	}
21227 
21228 	public static class DropIndexSpecificationContext extends ParserRuleContext {
21229 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
21230 		public List<IndexNameContext> indexName() {
21231 			return getRuleContexts(IndexNameContext.class);
21232 		}
21233 		public IndexNameContext indexName(int i) {
21234 			return getRuleContext(IndexNameContext.class,i);
21235 		}
21236 		public IfExistsContext ifExists() {
21237 			return getRuleContext(IfExistsContext.class,0);
21238 		}
21239 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21240 		public TerminalNode COMMA_(int i) {
21241 			return getToken(SQLServerStatementParser.COMMA_, i);
21242 		}
21243 		public DropIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
21244 			super(parent, invokingState);
21245 		}
21246 		@Override public int getRuleIndex() { return RULE_dropIndexSpecification; }
21247 		@Override
21248 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21249 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndexSpecification(this);
21250 			else return visitor.visitChildren(this);
21251 		}
21252 	}
21253 
21254 	public final DropIndexSpecificationContext dropIndexSpecification() throws RecognitionException {
21255 		DropIndexSpecificationContext _localctx = new DropIndexSpecificationContext(_ctx, getState());
21256 		enterRule(_localctx, 452, RULE_dropIndexSpecification);
21257 		int _la;
21258 		try {
21259 			int _alt;
21260 			enterOuterAlt(_localctx, 1);
21261 			{
21262 			setState(3104);
21263 			match(INDEX);
21264 			setState(3106);
21265 			_errHandler.sync(this);
21266 			_la = _input.LA(1);
21267 			if (_la==IF) {
21268 				{
21269 				setState(3105);
21270 				ifExists();
21271 				}
21272 			}
21273 
21274 			setState(3108);
21275 			indexName();
21276 			setState(3113);
21277 			_errHandler.sync(this);
21278 			_alt = getInterpreter().adaptivePredict(_input,279,_ctx);
21279 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21280 				if ( _alt==1 ) {
21281 					{
21282 					{
21283 					setState(3109);
21284 					match(COMMA_);
21285 					setState(3110);
21286 					indexName();
21287 					}
21288 					} 
21289 				}
21290 				setState(3115);
21291 				_errHandler.sync(this);
21292 				_alt = getInterpreter().adaptivePredict(_input,279,_ctx);
21293 			}
21294 			}
21295 		}
21296 		catch (RecognitionException re) {
21297 			_localctx.exception = re;
21298 			_errHandler.reportError(this, re);
21299 			_errHandler.recover(this, re);
21300 		}
21301 		finally {
21302 			exitRule();
21303 		}
21304 		return _localctx;
21305 	}
21306 
21307 	public static class AlterCheckConstraintContext extends ParserRuleContext {
21308 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21309 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
21310 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
21311 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
21312 		public ConstraintNameContext constraintName() {
21313 			return getRuleContext(ConstraintNameContext.class,0);
21314 		}
21315 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21316 		public AlterCheckConstraintContext(ParserRuleContext parent, int invokingState) {
21317 			super(parent, invokingState);
21318 		}
21319 		@Override public int getRuleIndex() { return RULE_alterCheckConstraint; }
21320 		@Override
21321 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21322 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterCheckConstraint(this);
21323 			else return visitor.visitChildren(this);
21324 		}
21325 	}
21326 
21327 	public final AlterCheckConstraintContext alterCheckConstraint() throws RecognitionException {
21328 		AlterCheckConstraintContext _localctx = new AlterCheckConstraintContext(_ctx, getState());
21329 		enterRule(_localctx, 454, RULE_alterCheckConstraint);
21330 		int _la;
21331 		try {
21332 			enterOuterAlt(_localctx, 1);
21333 			{
21334 			setState(3117);
21335 			_errHandler.sync(this);
21336 			_la = _input.LA(1);
21337 			if (_la==WITH) {
21338 				{
21339 				setState(3116);
21340 				match(WITH);
21341 				}
21342 			}
21343 
21344 			setState(3119);
21345 			_la = _input.LA(1);
21346 			if ( !(_la==CHECK || _la==NOCHECK) ) {
21347 			_errHandler.recoverInline(this);
21348 			}
21349 			else {
21350 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21351 				_errHandler.reportMatch(this);
21352 				consume();
21353 			}
21354 			setState(3120);
21355 			match(CONSTRAINT);
21356 			setState(3123);
21357 			_errHandler.sync(this);
21358 			switch (_input.LA(1)) {
21359 			case ALL:
21360 				{
21361 				setState(3121);
21362 				match(ALL);
21363 				}
21364 				break;
21365 			case TRUNCATE:
21366 			case SCHEMA:
21367 			case COLUMNS:
21368 			case PRECISION:
21369 			case FUNCTION:
21370 			case TRIGGER:
21371 			case CAST:
21372 			case SUBSTRING:
21373 			case OFF:
21374 			case GROUP:
21375 			case LIMIT:
21376 			case OFFSET:
21377 			case SAVEPOINT:
21378 			case BOOLEAN:
21379 			case ARRAY:
21380 			case DATE:
21381 			case LOCALTIME:
21382 			case LOCALTIMESTAMP:
21383 			case QUARTER:
21384 			case WEEK:
21385 			case DAY:
21386 			case SECOND:
21387 			case MICROSECOND:
21388 			case MAX:
21389 			case MIN:
21390 			case SUM:
21391 			case COUNT:
21392 			case AVG:
21393 			case ENABLE:
21394 			case DISABLE:
21395 			case INSTANCE:
21396 			case DO:
21397 			case DEFINER:
21398 			case SQL:
21399 			case CASCADED:
21400 			case LOCAL:
21401 			case NEXT:
21402 			case NAME:
21403 			case INTEGER:
21404 			case TYPE:
21405 			case TEXT:
21406 			case VIEWS:
21407 			case READ_ONLY:
21408 			case DATABASE:
21409 			case RETURNS:
21410 			case DATEPART:
21411 			case PASSWORD:
21412 			case BINARY:
21413 			case HIDDEN_:
21414 			case MOD:
21415 			case PARTITION:
21416 			case PARTITIONS:
21417 			case TOP:
21418 			case ROW:
21419 			case ROWS:
21420 			case XOR:
21421 			case ALWAYS:
21422 			case ROLE:
21423 			case START:
21424 			case ALGORITHM:
21425 			case AUTO:
21426 			case BLOCKERS:
21427 			case CLUSTERED:
21428 			case NONCLUSTERED:
21429 			case COLUMNSTORE:
21430 			case CONTENT:
21431 			case YEARS:
21432 			case MONTHS:
21433 			case WEEKS:
21434 			case DAYS:
21435 			case MINUTES:
21436 			case DENY:
21437 			case DETERMINISTIC:
21438 			case DISTRIBUTION:
21439 			case DOCUMENT:
21440 			case DURABILITY:
21441 			case ENCRYPTED:
21442 			case FILESTREAM:
21443 			case FILETABLE:
21444 			case FILLFACTOR:
21445 			case FOLLOWING:
21446 			case HASH:
21447 			case HEAP:
21448 			case INBOUND:
21449 			case OUTBOUND:
21450 			case UNBOUNDED:
21451 			case INFINITE:
21452 			case LOGIN:
21453 			case MASKED:
21454 			case MAXDOP:
21455 			case MOVE:
21456 			case NOCHECK:
21457 			case OBJECT:
21458 			case ONLINE:
21459 			case OVER:
21460 			case PAGE:
21461 			case PAUSED:
21462 			case PERIOD:
21463 			case PERSISTED:
21464 			case PRECEDING:
21465 			case RANDOMIZED:
21466 			case RANGE:
21467 			case REBUILD:
21468 			case REPLICATE:
21469 			case REPLICATION:
21470 			case RESUMABLE:
21471 			case ROWGUIDCOL:
21472 			case SAVE:
21473 			case SELF:
21474 			case SPARSE:
21475 			case SWITCH:
21476 			case TRAN:
21477 			case TRANCOUNT:
21478 			case CONTROL:
21479 			case CONCAT:
21480 			case TAKE:
21481 			case OWNERSHIP:
21482 			case DEFINITION:
21483 			case APPLICATION:
21484 			case ASSEMBLY:
21485 			case SYMMETRIC:
21486 			case ASYMMETRIC:
21487 			case SERVER:
21488 			case RECEIVE:
21489 			case CHANGE:
21490 			case TRACE:
21491 			case TRACKING:
21492 			case RESOURCES:
21493 			case SETTINGS:
21494 			case STATE:
21495 			case AVAILABILITY:
21496 			case CREDENTIAL:
21497 			case ENDPOINT:
21498 			case EVENT:
21499 			case NOTIFICATION:
21500 			case LINKED:
21501 			case AUDIT:
21502 			case DDL:
21503 			case XML:
21504 			case IMPERSONATE:
21505 			case SECURABLES:
21506 			case AUTHENTICATE:
21507 			case EXTERNAL:
21508 			case ACCESS:
21509 			case ADMINISTER:
21510 			case BULK:
21511 			case OPERATIONS:
21512 			case UNSAFE:
21513 			case SHUTDOWN:
21514 			case SCOPED:
21515 			case CONFIGURATION:
21516 			case DATASPACE:
21517 			case SERVICE:
21518 			case CERTIFICATE:
21519 			case CONTRACT:
21520 			case ENCRYPTION:
21521 			case MASTER:
21522 			case DATA:
21523 			case SOURCE:
21524 			case FILE:
21525 			case FORMAT:
21526 			case LIBRARY:
21527 			case FULLTEXT:
21528 			case MASK:
21529 			case UNMASK:
21530 			case MESSAGE:
21531 			case REMOTE:
21532 			case BINDING:
21533 			case ROUTE:
21534 			case SECURITY:
21535 			case POLICY:
21536 			case AGGREGATE:
21537 			case QUEUE:
21538 			case RULE:
21539 			case SYNONYM:
21540 			case COLLECTION:
21541 			case SCRIPT:
21542 			case KILL:
21543 			case BACKUP:
21544 			case LOG:
21545 			case SHOWPLAN:
21546 			case SUBSCRIBE:
21547 			case QUERY:
21548 			case NOTIFICATIONS:
21549 			case CHECKPOINT:
21550 			case SEQUENCE:
21551 			case ABORT_AFTER_WAIT:
21552 			case ALLOW_PAGE_LOCKS:
21553 			case ALLOW_ROW_LOCKS:
21554 			case ALL_SPARSE_COLUMNS:
21555 			case BUCKET_COUNT:
21556 			case COLUMNSTORE_ARCHIVE:
21557 			case COLUMN_ENCRYPTION_KEY:
21558 			case COLUMN_SET:
21559 			case COMPRESSION_DELAY:
21560 			case DATABASE_DEAULT:
21561 			case DATA_COMPRESSION:
21562 			case DATA_CONSISTENCY_CHECK:
21563 			case ENCRYPTION_TYPE:
21564 			case SYSTEM_TIME:
21565 			case SYSTEM_VERSIONING:
21566 			case TEXTIMAGE_ON:
21567 			case WAIT_AT_LOW_PRIORITY:
21568 			case STATISTICS_INCREMENTAL:
21569 			case STATISTICS_NORECOMPUTE:
21570 			case ROUND_ROBIN:
21571 			case SCHEMA_AND_DATA:
21572 			case SCHEMA_ONLY:
21573 			case SORT_IN_TEMPDB:
21574 			case IGNORE_DUP_KEY:
21575 			case IMPLICIT_TRANSACTIONS:
21576 			case MAX_DURATION:
21577 			case MEMORY_OPTIMIZED:
21578 			case MIGRATION_STATE:
21579 			case PAD_INDEX:
21580 			case REMOTE_DATA_ARCHIVE:
21581 			case FILESTREAM_ON:
21582 			case FILETABLE_COLLATE_FILENAME:
21583 			case FILETABLE_DIRECTORY:
21584 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
21585 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
21586 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
21587 			case FILTER_PREDICATE:
21588 			case HISTORY_RETENTION_PERIOD:
21589 			case HISTORY_TABLE:
21590 			case LOCK_ESCALATION:
21591 			case DROP_EXISTING:
21592 			case ROW_NUMBER:
21593 			case FIRST:
21594 			case DATETIME2:
21595 			case OUTPUT:
21596 			case INSERTED:
21597 			case DELETED:
21598 			case FILENAME:
21599 			case MAXSIZE:
21600 			case FILEGROWTH:
21601 			case UNLIMITED:
21602 			case KB:
21603 			case MB:
21604 			case GB:
21605 			case TB:
21606 			case MEMORY_OPTIMIZED_DATA:
21607 			case FILEGROUP:
21608 			case NON_TRANSACTED_ACCESS:
21609 			case DB_CHAINING:
21610 			case TRUSTWORTHY:
21611 			case FORWARD_ONLY:
21612 			case KEYSET:
21613 			case FAST_FORWARD:
21614 			case SCROLL_LOCKS:
21615 			case OPTIMISTIC:
21616 			case TYPE_WARNING:
21617 			case SCHEMABINDING:
21618 			case CALLER:
21619 			case OWNER:
21620 			case SNAPSHOT:
21621 			case REPEATABLE:
21622 			case SERIALIZABLE:
21623 			case NATIVE_COMPILATION:
21624 			case VIEW_METADATA:
21625 			case INSTEAD:
21626 			case APPEND:
21627 			case INCREMENT:
21628 			case CACHE:
21629 			case MINVALUE:
21630 			case MAXVALUE:
21631 			case RESTART:
21632 			case LOB_COMPACTION:
21633 			case COMPRESS_ALL_ROW_GROUPS:
21634 			case REORGANIZE:
21635 			case RESUME:
21636 			case PAUSE:
21637 			case ABORT:
21638 			case ACCELERATED_DATABASE_RECOVERY:
21639 			case PERSISTENT_VERSION_STORE_FILEGROUP:
21640 			case IMMEDIATE:
21641 			case NO_WAIT:
21642 			case TARGET_RECOVERY_TIME:
21643 			case SECONDS:
21644 			case HONOR_BROKER_PRIORITY:
21645 			case ERROR_BROKER_CONVERSATIONS:
21646 			case NEW_BROKER:
21647 			case DISABLE_BROKER:
21648 			case ENABLE_BROKER:
21649 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
21650 			case READ_COMMITTED_SNAPSHOT:
21651 			case ALLOW_SNAPSHOT_ISOLATION:
21652 			case RECURSIVE_TRIGGERS:
21653 			case QUOTED_IDENTIFIER:
21654 			case NUMERIC_ROUNDABORT:
21655 			case CONCAT_NULL_YIELDS_NULL:
21656 			case COMPATIBILITY_LEVEL:
21657 			case ARITHABORT:
21658 			case ANSI_WARNINGS:
21659 			case ANSI_PADDING:
21660 			case ANSI_NULLS:
21661 			case ANSI_NULL_DEFAULT:
21662 			case PAGE_VERIFY:
21663 			case CHECKSUM:
21664 			case TORN_PAGE_DETECTION:
21665 			case BULK_LOGGED:
21666 			case RECOVERY:
21667 			case TOTAL_EXECUTION_CPU_TIME_MS:
21668 			case TOTAL_COMPILE_CPU_TIME_MS:
21669 			case STALE_CAPTURE_POLICY_THRESHOLD:
21670 			case EXECUTION_COUNT:
21671 			case QUERY_CAPTURE_POLICY:
21672 			case WAIT_STATS_CAPTURE_MODE:
21673 			case MAX_PLANS_PER_QUERY:
21674 			case QUERY_CAPTURE_MODE:
21675 			case SIZE_BASED_CLEANUP_MODE:
21676 			case INTERVAL_LENGTH_MINUTES:
21677 			case MAX_STORAGE_SIZE_MB:
21678 			case DATA_FLUSH_INTERVAL_SECONDS:
21679 			case CLEANUP_POLICY:
21680 			case CUSTOM:
21681 			case STALE_QUERY_THRESHOLD_DAYS:
21682 			case OPERATION_MODE:
21683 			case QUERY_STORE:
21684 			case CURSOR_DEFAULT:
21685 			case GLOBAL:
21686 			case CURSOR_CLOSE_ON_COMMIT:
21687 			case HOURS:
21688 			case CHANGE_RETENTION:
21689 			case AUTO_CLEANUP:
21690 			case CHANGE_TRACKING:
21691 			case AUTOMATIC_TUNING:
21692 			case FORCE_LAST_GOOD_PLAN:
21693 			case AUTO_UPDATE_STATISTICS_ASYNC:
21694 			case AUTO_UPDATE_STATISTICS:
21695 			case AUTO_SHRINK:
21696 			case AUTO_CREATE_STATISTICS:
21697 			case INCREMENTAL:
21698 			case AUTO_CLOSE:
21699 			case DATA_RETENTION:
21700 			case TEMPORAL_HISTORY_RETENTION:
21701 			case EDITION:
21702 			case MIXED_PAGE_ALLOCATION:
21703 			case DISABLED:
21704 			case ALLOWED:
21705 			case HADR:
21706 			case MULTI_USER:
21707 			case RESTRICTED_USER:
21708 			case SINGLE_USER:
21709 			case OFFLINE:
21710 			case EMERGENCY:
21711 			case SUSPEND:
21712 			case DATE_CORRELATION_OPTIMIZATION:
21713 			case ELASTIC_POOL:
21714 			case SERVICE_OBJECTIVE:
21715 			case DATABASE_NAME:
21716 			case ALLOW_CONNECTIONS:
21717 			case GEO:
21718 			case NAMED:
21719 			case DATEFIRST:
21720 			case BACKUP_STORAGE_REDUNDANCY:
21721 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
21722 			case SECONDARY:
21723 			case FAILOVER:
21724 			case DEFAULT_FULLTEXT_LANGUAGE:
21725 			case DEFAULT_LANGUAGE:
21726 			case INLINE:
21727 			case NESTED_TRIGGERS:
21728 			case TRANSFORM_NOISE_WORDS:
21729 			case TWO_DIGIT_YEAR_CUTOFF:
21730 			case PERSISTENT_LOG_BUFFER:
21731 			case DIRECTORY_NAME:
21732 			case DATEFORMAT:
21733 			case DELAYED_DURABILITY:
21734 			case AUTHORIZATION:
21735 			case TRANSFER:
21736 			case PROVIDER:
21737 			case SEARCH:
21738 			case MEMBER:
21739 			case IDENTIFIER_:
21740 			case DELIMITED_IDENTIFIER_:
21741 				{
21742 				setState(3122);
21743 				constraintName();
21744 				}
21745 				break;
21746 			default:
21747 				throw new NoViableAltException(this);
21748 			}
21749 			}
21750 		}
21751 		catch (RecognitionException re) {
21752 			_localctx.exception = re;
21753 			_errHandler.reportError(this, re);
21754 			_errHandler.recover(this, re);
21755 		}
21756 		finally {
21757 			exitRule();
21758 		}
21759 		return _localctx;
21760 	}
21761 
21762 	public static class AlterTableTriggerContext extends ParserRuleContext {
21763 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
21764 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
21765 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
21766 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
21767 		public IgnoredIdentifiersContext ignoredIdentifiers() {
21768 			return getRuleContext(IgnoredIdentifiersContext.class,0);
21769 		}
21770 		public AlterTableTriggerContext(ParserRuleContext parent, int invokingState) {
21771 			super(parent, invokingState);
21772 		}
21773 		@Override public int getRuleIndex() { return RULE_alterTableTrigger; }
21774 		@Override
21775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTrigger(this);
21777 			else return visitor.visitChildren(this);
21778 		}
21779 	}
21780 
21781 	public final AlterTableTriggerContext alterTableTrigger() throws RecognitionException {
21782 		AlterTableTriggerContext _localctx = new AlterTableTriggerContext(_ctx, getState());
21783 		enterRule(_localctx, 456, RULE_alterTableTrigger);
21784 		int _la;
21785 		try {
21786 			enterOuterAlt(_localctx, 1);
21787 			{
21788 			setState(3125);
21789 			_la = _input.LA(1);
21790 			if ( !(_la==ENABLE || _la==DISABLE) ) {
21791 			_errHandler.recoverInline(this);
21792 			}
21793 			else {
21794 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21795 				_errHandler.reportMatch(this);
21796 				consume();
21797 			}
21798 			setState(3126);
21799 			match(TRIGGER);
21800 			setState(3129);
21801 			_errHandler.sync(this);
21802 			switch (_input.LA(1)) {
21803 			case ALL:
21804 				{
21805 				setState(3127);
21806 				match(ALL);
21807 				}
21808 				break;
21809 			case IDENTIFIER_:
21810 				{
21811 				setState(3128);
21812 				ignoredIdentifiers();
21813 				}
21814 				break;
21815 			default:
21816 				throw new NoViableAltException(this);
21817 			}
21818 			}
21819 		}
21820 		catch (RecognitionException re) {
21821 			_localctx.exception = re;
21822 			_errHandler.reportError(this, re);
21823 			_errHandler.recover(this, re);
21824 		}
21825 		finally {
21826 			exitRule();
21827 		}
21828 		return _localctx;
21829 	}
21830 
21831 	public static class AlterSwitchContext extends ParserRuleContext {
21832 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
21833 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
21834 		public TableNameContext tableName() {
21835 			return getRuleContext(TableNameContext.class,0);
21836 		}
21837 		public List<TerminalNode> PARTITION() { return getTokens(SQLServerStatementParser.PARTITION); }
21838 		public TerminalNode PARTITION(int i) {
21839 			return getToken(SQLServerStatementParser.PARTITION, i);
21840 		}
21841 		public List<ExprContext> expr() {
21842 			return getRuleContexts(ExprContext.class);
21843 		}
21844 		public ExprContext expr(int i) {
21845 			return getRuleContext(ExprContext.class,i);
21846 		}
21847 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21848 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21849 		public LowPriorityLockWaitContext lowPriorityLockWait() {
21850 			return getRuleContext(LowPriorityLockWaitContext.class,0);
21851 		}
21852 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21853 		public AlterSwitchContext(ParserRuleContext parent, int invokingState) {
21854 			super(parent, invokingState);
21855 		}
21856 		@Override public int getRuleIndex() { return RULE_alterSwitch; }
21857 		@Override
21858 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21859 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSwitch(this);
21860 			else return visitor.visitChildren(this);
21861 		}
21862 	}
21863 
21864 	public final AlterSwitchContext alterSwitch() throws RecognitionException {
21865 		AlterSwitchContext _localctx = new AlterSwitchContext(_ctx, getState());
21866 		enterRule(_localctx, 458, RULE_alterSwitch);
21867 		int _la;
21868 		try {
21869 			enterOuterAlt(_localctx, 1);
21870 			{
21871 			setState(3131);
21872 			match(SWITCH);
21873 			setState(3134);
21874 			_errHandler.sync(this);
21875 			_la = _input.LA(1);
21876 			if (_la==PARTITION) {
21877 				{
21878 				setState(3132);
21879 				match(PARTITION);
21880 				setState(3133);
21881 				expr(0);
21882 				}
21883 			}
21884 
21885 			setState(3136);
21886 			match(TO);
21887 			setState(3137);
21888 			tableName();
21889 			setState(3140);
21890 			_errHandler.sync(this);
21891 			_la = _input.LA(1);
21892 			if (_la==PARTITION) {
21893 				{
21894 				setState(3138);
21895 				match(PARTITION);
21896 				setState(3139);
21897 				expr(0);
21898 				}
21899 			}
21900 
21901 			setState(3147);
21902 			_errHandler.sync(this);
21903 			switch ( getInterpreter().adaptivePredict(_input,285,_ctx) ) {
21904 			case 1:
21905 				{
21906 				setState(3142);
21907 				match(WITH);
21908 				setState(3143);
21909 				match(LP_);
21910 				setState(3144);
21911 				lowPriorityLockWait();
21912 				setState(3145);
21913 				match(RP_);
21914 				}
21915 				break;
21916 			}
21917 			}
21918 		}
21919 		catch (RecognitionException re) {
21920 			_localctx.exception = re;
21921 			_errHandler.reportError(this, re);
21922 			_errHandler.recover(this, re);
21923 		}
21924 		finally {
21925 			exitRule();
21926 		}
21927 		return _localctx;
21928 	}
21929 
21930 	public static class AlterSetContext extends ParserRuleContext {
21931 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
21932 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21933 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21934 		public SetFileStreamClauseContext setFileStreamClause() {
21935 			return getRuleContext(SetFileStreamClauseContext.class,0);
21936 		}
21937 		public SetSystemVersionClauseContext setSystemVersionClause() {
21938 			return getRuleContext(SetSystemVersionClauseContext.class,0);
21939 		}
21940 		public AlterSetContext(ParserRuleContext parent, int invokingState) {
21941 			super(parent, invokingState);
21942 		}
21943 		@Override public int getRuleIndex() { return RULE_alterSet; }
21944 		@Override
21945 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21946 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSet(this);
21947 			else return visitor.visitChildren(this);
21948 		}
21949 	}
21950 
21951 	public final AlterSetContext alterSet() throws RecognitionException {
21952 		AlterSetContext _localctx = new AlterSetContext(_ctx, getState());
21953 		enterRule(_localctx, 460, RULE_alterSet);
21954 		try {
21955 			enterOuterAlt(_localctx, 1);
21956 			{
21957 			setState(3149);
21958 			match(SET);
21959 			setState(3150);
21960 			match(LP_);
21961 			setState(3153);
21962 			_errHandler.sync(this);
21963 			switch (_input.LA(1)) {
21964 			case FILESTREAM_ON:
21965 				{
21966 				setState(3151);
21967 				setFileStreamClause();
21968 				}
21969 				break;
21970 			case SYSTEM_VERSIONING:
21971 				{
21972 				setState(3152);
21973 				setSystemVersionClause();
21974 				}
21975 				break;
21976 			default:
21977 				throw new NoViableAltException(this);
21978 			}
21979 			setState(3155);
21980 			match(RP_);
21981 			}
21982 		}
21983 		catch (RecognitionException re) {
21984 			_localctx.exception = re;
21985 			_errHandler.reportError(this, re);
21986 			_errHandler.recover(this, re);
21987 		}
21988 		finally {
21989 			exitRule();
21990 		}
21991 		return _localctx;
21992 	}
21993 
21994 	public static class SetFileStreamClauseContext extends ParserRuleContext {
21995 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
21996 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21997 		public SchemaNameContext schemaName() {
21998 			return getRuleContext(SchemaNameContext.class,0);
21999 		}
22000 		public IgnoredIdentifierContext ignoredIdentifier() {
22001 			return getRuleContext(IgnoredIdentifierContext.class,0);
22002 		}
22003 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
22004 		public SetFileStreamClauseContext(ParserRuleContext parent, int invokingState) {
22005 			super(parent, invokingState);
22006 		}
22007 		@Override public int getRuleIndex() { return RULE_setFileStreamClause; }
22008 		@Override
22009 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22010 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetFileStreamClause(this);
22011 			else return visitor.visitChildren(this);
22012 		}
22013 	}
22014 
22015 	public final SetFileStreamClauseContext setFileStreamClause() throws RecognitionException {
22016 		SetFileStreamClauseContext _localctx = new SetFileStreamClauseContext(_ctx, getState());
22017 		enterRule(_localctx, 462, RULE_setFileStreamClause);
22018 		try {
22019 			enterOuterAlt(_localctx, 1);
22020 			{
22021 			setState(3157);
22022 			match(FILESTREAM_ON);
22023 			setState(3158);
22024 			match(EQ_);
22025 			setState(3162);
22026 			_errHandler.sync(this);
22027 			switch ( getInterpreter().adaptivePredict(_input,287,_ctx) ) {
22028 			case 1:
22029 				{
22030 				setState(3159);
22031 				schemaName();
22032 				}
22033 				break;
22034 			case 2:
22035 				{
22036 				setState(3160);
22037 				ignoredIdentifier();
22038 				}
22039 				break;
22040 			case 3:
22041 				{
22042 				setState(3161);
22043 				match(STRING_);
22044 				}
22045 				break;
22046 			}
22047 			}
22048 		}
22049 		catch (RecognitionException re) {
22050 			_localctx.exception = re;
22051 			_errHandler.reportError(this, re);
22052 			_errHandler.recover(this, re);
22053 		}
22054 		finally {
22055 			exitRule();
22056 		}
22057 		return _localctx;
22058 	}
22059 
22060 	public static class SetSystemVersionClauseContext extends ParserRuleContext {
22061 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
22062 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22063 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
22064 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22065 		public AlterSetOnClauseContext alterSetOnClause() {
22066 			return getRuleContext(AlterSetOnClauseContext.class,0);
22067 		}
22068 		public SetSystemVersionClauseContext(ParserRuleContext parent, int invokingState) {
22069 			super(parent, invokingState);
22070 		}
22071 		@Override public int getRuleIndex() { return RULE_setSystemVersionClause; }
22072 		@Override
22073 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22074 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetSystemVersionClause(this);
22075 			else return visitor.visitChildren(this);
22076 		}
22077 	}
22078 
22079 	public final SetSystemVersionClauseContext setSystemVersionClause() throws RecognitionException {
22080 		SetSystemVersionClauseContext _localctx = new SetSystemVersionClauseContext(_ctx, getState());
22081 		enterRule(_localctx, 464, RULE_setSystemVersionClause);
22082 		int _la;
22083 		try {
22084 			enterOuterAlt(_localctx, 1);
22085 			{
22086 			setState(3164);
22087 			match(SYSTEM_VERSIONING);
22088 			setState(3165);
22089 			match(EQ_);
22090 			setState(3171);
22091 			_errHandler.sync(this);
22092 			switch (_input.LA(1)) {
22093 			case OFF:
22094 				{
22095 				setState(3166);
22096 				match(OFF);
22097 				}
22098 				break;
22099 			case ON:
22100 				{
22101 				setState(3167);
22102 				match(ON);
22103 				setState(3169);
22104 				_errHandler.sync(this);
22105 				_la = _input.LA(1);
22106 				if (_la==LP_) {
22107 					{
22108 					setState(3168);
22109 					alterSetOnClause();
22110 					}
22111 				}
22112 
22113 				}
22114 				break;
22115 			default:
22116 				throw new NoViableAltException(this);
22117 			}
22118 			}
22119 		}
22120 		catch (RecognitionException re) {
22121 			_localctx.exception = re;
22122 			_errHandler.reportError(this, re);
22123 			_errHandler.recover(this, re);
22124 		}
22125 		finally {
22126 			exitRule();
22127 		}
22128 		return _localctx;
22129 	}
22130 
22131 	public static class AlterSetOnClauseContext extends ParserRuleContext {
22132 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22133 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22134 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
22135 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22136 		public TableNameContext tableName() {
22137 			return getRuleContext(TableNameContext.class,0);
22138 		}
22139 		public DataConsistencyCheckClauseContext dataConsistencyCheckClause() {
22140 			return getRuleContext(DataConsistencyCheckClauseContext.class,0);
22141 		}
22142 		public HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() {
22143 			return getRuleContext(HistoryRetentionPeriodClauseContext.class,0);
22144 		}
22145 		public AlterSetOnClauseContext(ParserRuleContext parent, int invokingState) {
22146 			super(parent, invokingState);
22147 		}
22148 		@Override public int getRuleIndex() { return RULE_alterSetOnClause; }
22149 		@Override
22150 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22151 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSetOnClause(this);
22152 			else return visitor.visitChildren(this);
22153 		}
22154 	}
22155 
22156 	public final AlterSetOnClauseContext alterSetOnClause() throws RecognitionException {
22157 		AlterSetOnClauseContext _localctx = new AlterSetOnClauseContext(_ctx, getState());
22158 		enterRule(_localctx, 466, RULE_alterSetOnClause);
22159 		int _la;
22160 		try {
22161 			enterOuterAlt(_localctx, 1);
22162 			{
22163 			setState(3173);
22164 			match(LP_);
22165 			setState(3177);
22166 			_errHandler.sync(this);
22167 			_la = _input.LA(1);
22168 			if (_la==HISTORY_TABLE) {
22169 				{
22170 				setState(3174);
22171 				match(HISTORY_TABLE);
22172 				setState(3175);
22173 				match(EQ_);
22174 				setState(3176);
22175 				tableName();
22176 				}
22177 			}
22178 
22179 			setState(3180);
22180 			_errHandler.sync(this);
22181 			switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) {
22182 			case 1:
22183 				{
22184 				setState(3179);
22185 				dataConsistencyCheckClause();
22186 				}
22187 				break;
22188 			}
22189 			setState(3183);
22190 			_errHandler.sync(this);
22191 			_la = _input.LA(1);
22192 			if (_la==COMMA_ || _la==HISTORY_RETENTION_PERIOD) {
22193 				{
22194 				setState(3182);
22195 				historyRetentionPeriodClause();
22196 				}
22197 			}
22198 
22199 			setState(3185);
22200 			match(RP_);
22201 			}
22202 		}
22203 		catch (RecognitionException re) {
22204 			_localctx.exception = re;
22205 			_errHandler.reportError(this, re);
22206 			_errHandler.recover(this, re);
22207 		}
22208 		finally {
22209 			exitRule();
22210 		}
22211 		return _localctx;
22212 	}
22213 
22214 	public static class DataConsistencyCheckClauseContext extends ParserRuleContext {
22215 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
22216 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22217 		public OnOffOptionContext onOffOption() {
22218 			return getRuleContext(OnOffOptionContext.class,0);
22219 		}
22220 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22221 		public DataConsistencyCheckClauseContext(ParserRuleContext parent, int invokingState) {
22222 			super(parent, invokingState);
22223 		}
22224 		@Override public int getRuleIndex() { return RULE_dataConsistencyCheckClause; }
22225 		@Override
22226 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22227 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataConsistencyCheckClause(this);
22228 			else return visitor.visitChildren(this);
22229 		}
22230 	}
22231 
22232 	public final DataConsistencyCheckClauseContext dataConsistencyCheckClause() throws RecognitionException {
22233 		DataConsistencyCheckClauseContext _localctx = new DataConsistencyCheckClauseContext(_ctx, getState());
22234 		enterRule(_localctx, 468, RULE_dataConsistencyCheckClause);
22235 		int _la;
22236 		try {
22237 			enterOuterAlt(_localctx, 1);
22238 			{
22239 			setState(3188);
22240 			_errHandler.sync(this);
22241 			_la = _input.LA(1);
22242 			if (_la==COMMA_) {
22243 				{
22244 				setState(3187);
22245 				match(COMMA_);
22246 				}
22247 			}
22248 
22249 			setState(3190);
22250 			match(DATA_CONSISTENCY_CHECK);
22251 			setState(3191);
22252 			match(EQ_);
22253 			setState(3192);
22254 			onOffOption();
22255 			}
22256 		}
22257 		catch (RecognitionException re) {
22258 			_localctx.exception = re;
22259 			_errHandler.reportError(this, re);
22260 			_errHandler.recover(this, re);
22261 		}
22262 		finally {
22263 			exitRule();
22264 		}
22265 		return _localctx;
22266 	}
22267 
22268 	public static class HistoryRetentionPeriodClauseContext extends ParserRuleContext {
22269 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
22270 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22271 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
22272 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
22273 		}
22274 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22275 		public HistoryRetentionPeriodClauseContext(ParserRuleContext parent, int invokingState) {
22276 			super(parent, invokingState);
22277 		}
22278 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriodClause; }
22279 		@Override
22280 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22281 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriodClause(this);
22282 			else return visitor.visitChildren(this);
22283 		}
22284 	}
22285 
22286 	public final HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() throws RecognitionException {
22287 		HistoryRetentionPeriodClauseContext _localctx = new HistoryRetentionPeriodClauseContext(_ctx, getState());
22288 		enterRule(_localctx, 470, RULE_historyRetentionPeriodClause);
22289 		int _la;
22290 		try {
22291 			enterOuterAlt(_localctx, 1);
22292 			{
22293 			setState(3195);
22294 			_errHandler.sync(this);
22295 			_la = _input.LA(1);
22296 			if (_la==COMMA_) {
22297 				{
22298 				setState(3194);
22299 				match(COMMA_);
22300 				}
22301 			}
22302 
22303 			setState(3197);
22304 			match(HISTORY_RETENTION_PERIOD);
22305 			setState(3198);
22306 			match(EQ_);
22307 			setState(3199);
22308 			historyRetentionPeriod();
22309 			}
22310 		}
22311 		catch (RecognitionException re) {
22312 			_localctx.exception = re;
22313 			_errHandler.reportError(this, re);
22314 			_errHandler.recover(this, re);
22315 		}
22316 		finally {
22317 			exitRule();
22318 		}
22319 		return _localctx;
22320 	}
22321 
22322 	public static class HistoryRetentionPeriodContext extends ParserRuleContext {
22323 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
22324 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
22325 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
22326 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
22327 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
22328 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
22329 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
22330 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
22331 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
22332 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
22333 		public HistoryRetentionPeriodContext(ParserRuleContext parent, int invokingState) {
22334 			super(parent, invokingState);
22335 		}
22336 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriod; }
22337 		@Override
22338 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22339 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriod(this);
22340 			else return visitor.visitChildren(this);
22341 		}
22342 	}
22343 
22344 	public final HistoryRetentionPeriodContext historyRetentionPeriod() throws RecognitionException {
22345 		HistoryRetentionPeriodContext _localctx = new HistoryRetentionPeriodContext(_ctx, getState());
22346 		enterRule(_localctx, 472, RULE_historyRetentionPeriod);
22347 		int _la;
22348 		try {
22349 			setState(3204);
22350 			_errHandler.sync(this);
22351 			switch (_input.LA(1)) {
22352 			case INFINITE:
22353 				enterOuterAlt(_localctx, 1);
22354 				{
22355 				setState(3201);
22356 				match(INFINITE);
22357 				}
22358 				break;
22359 			case NUMBER_:
22360 				enterOuterAlt(_localctx, 2);
22361 				{
22362 				{
22363 				setState(3202);
22364 				match(NUMBER_);
22365 				setState(3203);
22366 				_la = _input.LA(1);
22367 				if ( !(((((_la - 140)) & ~0x3f) == 0 && ((1L << (_la - 140)) & ((1L << (YEAR - 140)) | (1L << (MONTH - 140)) | (1L << (WEEK - 140)) | (1L << (DAY - 140)))) != 0) || ((((_la - 250)) & ~0x3f) == 0 && ((1L << (_la - 250)) & ((1L << (YEARS - 250)) | (1L << (MONTHS - 250)) | (1L << (WEEKS - 250)) | (1L << (DAYS - 250)))) != 0)) ) {
22368 				_errHandler.recoverInline(this);
22369 				}
22370 				else {
22371 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22372 					_errHandler.reportMatch(this);
22373 					consume();
22374 				}
22375 				}
22376 				}
22377 				break;
22378 			default:
22379 				throw new NoViableAltException(this);
22380 			}
22381 		}
22382 		catch (RecognitionException re) {
22383 			_localctx.exception = re;
22384 			_errHandler.reportError(this, re);
22385 			_errHandler.recover(this, re);
22386 		}
22387 		finally {
22388 			exitRule();
22389 		}
22390 		return _localctx;
22391 	}
22392 
22393 	public static class AlterTableTableIndexContext extends ParserRuleContext {
22394 		public IndexWithNameContext indexWithName() {
22395 			return getRuleContext(IndexWithNameContext.class,0);
22396 		}
22397 		public IndexNonClusterClauseContext indexNonClusterClause() {
22398 			return getRuleContext(IndexNonClusterClauseContext.class,0);
22399 		}
22400 		public IndexClusterClauseContext indexClusterClause() {
22401 			return getRuleContext(IndexClusterClauseContext.class,0);
22402 		}
22403 		public AlterTableTableIndexContext(ParserRuleContext parent, int invokingState) {
22404 			super(parent, invokingState);
22405 		}
22406 		@Override public int getRuleIndex() { return RULE_alterTableTableIndex; }
22407 		@Override
22408 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22409 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTableIndex(this);
22410 			else return visitor.visitChildren(this);
22411 		}
22412 	}
22413 
22414 	public final AlterTableTableIndexContext alterTableTableIndex() throws RecognitionException {
22415 		AlterTableTableIndexContext _localctx = new AlterTableTableIndexContext(_ctx, getState());
22416 		enterRule(_localctx, 474, RULE_alterTableTableIndex);
22417 		try {
22418 			enterOuterAlt(_localctx, 1);
22419 			{
22420 			setState(3206);
22421 			indexWithName();
22422 			setState(3209);
22423 			_errHandler.sync(this);
22424 			switch (_input.LA(1)) {
22425 			case NONCLUSTERED:
22426 				{
22427 				setState(3207);
22428 				indexNonClusterClause();
22429 				}
22430 				break;
22431 			case CLUSTERED:
22432 				{
22433 				setState(3208);
22434 				indexClusterClause();
22435 				}
22436 				break;
22437 			default:
22438 				throw new NoViableAltException(this);
22439 			}
22440 			}
22441 		}
22442 		catch (RecognitionException re) {
22443 			_localctx.exception = re;
22444 			_errHandler.reportError(this, re);
22445 			_errHandler.recover(this, re);
22446 		}
22447 		finally {
22448 			exitRule();
22449 		}
22450 		return _localctx;
22451 	}
22452 
22453 	public static class IndexWithNameContext extends ParserRuleContext {
22454 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
22455 		public IndexNameContext indexName() {
22456 			return getRuleContext(IndexNameContext.class,0);
22457 		}
22458 		public IndexWithNameContext(ParserRuleContext parent, int invokingState) {
22459 			super(parent, invokingState);
22460 		}
22461 		@Override public int getRuleIndex() { return RULE_indexWithName; }
22462 		@Override
22463 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22464 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexWithName(this);
22465 			else return visitor.visitChildren(this);
22466 		}
22467 	}
22468 
22469 	public final IndexWithNameContext indexWithName() throws RecognitionException {
22470 		IndexWithNameContext _localctx = new IndexWithNameContext(_ctx, getState());
22471 		enterRule(_localctx, 476, RULE_indexWithName);
22472 		try {
22473 			enterOuterAlt(_localctx, 1);
22474 			{
22475 			setState(3211);
22476 			match(INDEX);
22477 			setState(3212);
22478 			indexName();
22479 			}
22480 		}
22481 		catch (RecognitionException re) {
22482 			_localctx.exception = re;
22483 			_errHandler.reportError(this, re);
22484 			_errHandler.recover(this, re);
22485 		}
22486 		finally {
22487 			exitRule();
22488 		}
22489 		return _localctx;
22490 	}
22491 
22492 	public static class IndexNonClusterClauseContext extends ParserRuleContext {
22493 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
22494 		public HashWithBucketContext hashWithBucket() {
22495 			return getRuleContext(HashWithBucketContext.class,0);
22496 		}
22497 		public ColumnNamesWithSortContext columnNamesWithSort() {
22498 			return getRuleContext(ColumnNamesWithSortContext.class,0);
22499 		}
22500 		public AlterTableIndexOnClauseContext alterTableIndexOnClause() {
22501 			return getRuleContext(AlterTableIndexOnClauseContext.class,0);
22502 		}
22503 		public IndexNonClusterClauseContext(ParserRuleContext parent, int invokingState) {
22504 			super(parent, invokingState);
22505 		}
22506 		@Override public int getRuleIndex() { return RULE_indexNonClusterClause; }
22507 		@Override
22508 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22509 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNonClusterClause(this);
22510 			else return visitor.visitChildren(this);
22511 		}
22512 	}
22513 
22514 	public final IndexNonClusterClauseContext indexNonClusterClause() throws RecognitionException {
22515 		IndexNonClusterClauseContext _localctx = new IndexNonClusterClauseContext(_ctx, getState());
22516 		enterRule(_localctx, 478, RULE_indexNonClusterClause);
22517 		int _la;
22518 		try {
22519 			enterOuterAlt(_localctx, 1);
22520 			{
22521 			setState(3214);
22522 			match(NONCLUSTERED);
22523 			setState(3220);
22524 			_errHandler.sync(this);
22525 			switch (_input.LA(1)) {
22526 			case HASH:
22527 				{
22528 				setState(3215);
22529 				hashWithBucket();
22530 				}
22531 				break;
22532 			case LP_:
22533 				{
22534 				setState(3216);
22535 				columnNamesWithSort();
22536 				setState(3218);
22537 				_errHandler.sync(this);
22538 				_la = _input.LA(1);
22539 				if (_la==ON || _la==DEFAULT) {
22540 					{
22541 					setState(3217);
22542 					alterTableIndexOnClause();
22543 					}
22544 				}
22545 
22546 				}
22547 				break;
22548 			default:
22549 				throw new NoViableAltException(this);
22550 			}
22551 			}
22552 		}
22553 		catch (RecognitionException re) {
22554 			_localctx.exception = re;
22555 			_errHandler.reportError(this, re);
22556 			_errHandler.recover(this, re);
22557 		}
22558 		finally {
22559 			exitRule();
22560 		}
22561 		return _localctx;
22562 	}
22563 
22564 	public static class AlterTableIndexOnClauseContext extends ParserRuleContext {
22565 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22566 		public IgnoredIdentifierContext ignoredIdentifier() {
22567 			return getRuleContext(IgnoredIdentifierContext.class,0);
22568 		}
22569 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
22570 		public AlterTableIndexOnClauseContext(ParserRuleContext parent, int invokingState) {
22571 			super(parent, invokingState);
22572 		}
22573 		@Override public int getRuleIndex() { return RULE_alterTableIndexOnClause; }
22574 		@Override
22575 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22576 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableIndexOnClause(this);
22577 			else return visitor.visitChildren(this);
22578 		}
22579 	}
22580 
22581 	public final AlterTableIndexOnClauseContext alterTableIndexOnClause() throws RecognitionException {
22582 		AlterTableIndexOnClauseContext _localctx = new AlterTableIndexOnClauseContext(_ctx, getState());
22583 		enterRule(_localctx, 480, RULE_alterTableIndexOnClause);
22584 		try {
22585 			setState(3225);
22586 			_errHandler.sync(this);
22587 			switch (_input.LA(1)) {
22588 			case ON:
22589 				enterOuterAlt(_localctx, 1);
22590 				{
22591 				setState(3222);
22592 				match(ON);
22593 				setState(3223);
22594 				ignoredIdentifier();
22595 				}
22596 				break;
22597 			case DEFAULT:
22598 				enterOuterAlt(_localctx, 2);
22599 				{
22600 				setState(3224);
22601 				match(DEFAULT);
22602 				}
22603 				break;
22604 			default:
22605 				throw new NoViableAltException(this);
22606 			}
22607 		}
22608 		catch (RecognitionException re) {
22609 			_localctx.exception = re;
22610 			_errHandler.reportError(this, re);
22611 			_errHandler.recover(this, re);
22612 		}
22613 		finally {
22614 			exitRule();
22615 		}
22616 		return _localctx;
22617 	}
22618 
22619 	public static class IndexClusterClauseContext extends ParserRuleContext {
22620 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
22621 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
22622 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22623 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
22624 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22625 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
22626 		public IndexOnClauseContext indexOnClause() {
22627 			return getRuleContext(IndexOnClauseContext.class,0);
22628 		}
22629 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
22630 		public IndexClusterClauseContext(ParserRuleContext parent, int invokingState) {
22631 			super(parent, invokingState);
22632 		}
22633 		@Override public int getRuleIndex() { return RULE_indexClusterClause; }
22634 		@Override
22635 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22636 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexClusterClause(this);
22637 			else return visitor.visitChildren(this);
22638 		}
22639 	}
22640 
22641 	public final IndexClusterClauseContext indexClusterClause() throws RecognitionException {
22642 		IndexClusterClauseContext _localctx = new IndexClusterClauseContext(_ctx, getState());
22643 		enterRule(_localctx, 482, RULE_indexClusterClause);
22644 		int _la;
22645 		try {
22646 			enterOuterAlt(_localctx, 1);
22647 			{
22648 			setState(3227);
22649 			match(CLUSTERED);
22650 			setState(3228);
22651 			match(COLUMNSTORE);
22652 			setState(3236);
22653 			_errHandler.sync(this);
22654 			switch ( getInterpreter().adaptivePredict(_input,301,_ctx) ) {
22655 			case 1:
22656 				{
22657 				setState(3229);
22658 				match(WITH);
22659 				setState(3230);
22660 				match(COMPRESSION_DELAY);
22661 				setState(3231);
22662 				match(EQ_);
22663 				setState(3232);
22664 				match(NUMBER_);
22665 				setState(3234);
22666 				_errHandler.sync(this);
22667 				_la = _input.LA(1);
22668 				if (_la==MINUTES) {
22669 					{
22670 					setState(3233);
22671 					match(MINUTES);
22672 					}
22673 				}
22674 
22675 				}
22676 				break;
22677 			}
22678 			setState(3239);
22679 			_errHandler.sync(this);
22680 			_la = _input.LA(1);
22681 			if (_la==ON) {
22682 				{
22683 				setState(3238);
22684 				indexOnClause();
22685 				}
22686 			}
22687 
22688 			}
22689 		}
22690 		catch (RecognitionException re) {
22691 			_localctx.exception = re;
22692 			_errHandler.reportError(this, re);
22693 			_errHandler.recover(this, re);
22694 		}
22695 		finally {
22696 			exitRule();
22697 		}
22698 		return _localctx;
22699 	}
22700 
22701 	public static class AlterTableOptionContext extends ParserRuleContext {
22702 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
22703 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22704 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
22705 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22706 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22707 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
22708 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
22709 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
22710 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
22711 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22712 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
22713 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
22714 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
22715 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
22716 		public OnHistoryTableClauseContext onHistoryTableClause() {
22717 			return getRuleContext(OnHistoryTableClauseContext.class,0);
22718 		}
22719 		public AlterTableOptionContext(ParserRuleContext parent, int invokingState) {
22720 			super(parent, invokingState);
22721 		}
22722 		@Override public int getRuleIndex() { return RULE_alterTableOption; }
22723 		@Override
22724 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22725 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableOption(this);
22726 			else return visitor.visitChildren(this);
22727 		}
22728 	}
22729 
22730 	public final AlterTableOptionContext alterTableOption() throws RecognitionException {
22731 		AlterTableOptionContext _localctx = new AlterTableOptionContext(_ctx, getState());
22732 		enterRule(_localctx, 484, RULE_alterTableOption);
22733 		int _la;
22734 		try {
22735 			setState(3259);
22736 			_errHandler.sync(this);
22737 			switch (_input.LA(1)) {
22738 			case SET:
22739 				enterOuterAlt(_localctx, 1);
22740 				{
22741 				setState(3241);
22742 				match(SET);
22743 				setState(3242);
22744 				match(LP_);
22745 				setState(3243);
22746 				match(LOCK_ESCALATION);
22747 				setState(3244);
22748 				match(EQ_);
22749 				setState(3245);
22750 				_la = _input.LA(1);
22751 				if ( !(_la==TABLE || _la==DISABLE || _la==AUTO) ) {
22752 				_errHandler.recoverInline(this);
22753 				}
22754 				else {
22755 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22756 					_errHandler.reportMatch(this);
22757 					consume();
22758 				}
22759 				setState(3246);
22760 				match(RP_);
22761 				}
22762 				break;
22763 			case MEMORY_OPTIMIZED:
22764 				enterOuterAlt(_localctx, 2);
22765 				{
22766 				setState(3247);
22767 				match(MEMORY_OPTIMIZED);
22768 				setState(3248);
22769 				match(EQ_);
22770 				setState(3249);
22771 				match(ON);
22772 				}
22773 				break;
22774 			case DURABILITY:
22775 				enterOuterAlt(_localctx, 3);
22776 				{
22777 				setState(3250);
22778 				match(DURABILITY);
22779 				setState(3251);
22780 				match(EQ_);
22781 				setState(3252);
22782 				_la = _input.LA(1);
22783 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
22784 				_errHandler.recoverInline(this);
22785 				}
22786 				else {
22787 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22788 					_errHandler.reportMatch(this);
22789 					consume();
22790 				}
22791 				}
22792 				break;
22793 			case SYSTEM_VERSIONING:
22794 				enterOuterAlt(_localctx, 4);
22795 				{
22796 				setState(3253);
22797 				match(SYSTEM_VERSIONING);
22798 				setState(3254);
22799 				match(EQ_);
22800 				setState(3255);
22801 				match(ON);
22802 				setState(3257);
22803 				_errHandler.sync(this);
22804 				_la = _input.LA(1);
22805 				if (_la==LP_) {
22806 					{
22807 					setState(3256);
22808 					onHistoryTableClause();
22809 					}
22810 				}
22811 
22812 				}
22813 				break;
22814 			default:
22815 				throw new NoViableAltException(this);
22816 			}
22817 		}
22818 		catch (RecognitionException re) {
22819 			_localctx.exception = re;
22820 			_errHandler.reportError(this, re);
22821 			_errHandler.recover(this, re);
22822 		}
22823 		finally {
22824 			exitRule();
22825 		}
22826 		return _localctx;
22827 	}
22828 
22829 	public static class OnHistoryTableClauseContext extends ParserRuleContext {
22830 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22831 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
22832 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
22833 		public TerminalNode EQ_(int i) {
22834 			return getToken(SQLServerStatementParser.EQ_, i);
22835 		}
22836 		public TableNameContext tableName() {
22837 			return getRuleContext(TableNameContext.class,0);
22838 		}
22839 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22840 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22841 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
22842 		public OnOffOptionContext onOffOption() {
22843 			return getRuleContext(OnOffOptionContext.class,0);
22844 		}
22845 		public OnHistoryTableClauseContext(ParserRuleContext parent, int invokingState) {
22846 			super(parent, invokingState);
22847 		}
22848 		@Override public int getRuleIndex() { return RULE_onHistoryTableClause; }
22849 		@Override
22850 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22851 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnHistoryTableClause(this);
22852 			else return visitor.visitChildren(this);
22853 		}
22854 	}
22855 
22856 	public final OnHistoryTableClauseContext onHistoryTableClause() throws RecognitionException {
22857 		OnHistoryTableClauseContext _localctx = new OnHistoryTableClauseContext(_ctx, getState());
22858 		enterRule(_localctx, 486, RULE_onHistoryTableClause);
22859 		int _la;
22860 		try {
22861 			enterOuterAlt(_localctx, 1);
22862 			{
22863 			setState(3261);
22864 			match(LP_);
22865 			setState(3262);
22866 			match(HISTORY_TABLE);
22867 			setState(3263);
22868 			match(EQ_);
22869 			setState(3264);
22870 			tableName();
22871 			setState(3269);
22872 			_errHandler.sync(this);
22873 			_la = _input.LA(1);
22874 			if (_la==COMMA_) {
22875 				{
22876 				setState(3265);
22877 				match(COMMA_);
22878 				setState(3266);
22879 				match(DATA_CONSISTENCY_CHECK);
22880 				setState(3267);
22881 				match(EQ_);
22882 				setState(3268);
22883 				onOffOption();
22884 				}
22885 			}
22886 
22887 			setState(3271);
22888 			match(RP_);
22889 			}
22890 		}
22891 		catch (RecognitionException re) {
22892 			_localctx.exception = re;
22893 			_errHandler.reportError(this, re);
22894 			_errHandler.recover(this, re);
22895 		}
22896 		finally {
22897 			exitRule();
22898 		}
22899 		return _localctx;
22900 	}
22901 
22902 	public static class CreateDatabaseClauseContext extends ParserRuleContext {
22903 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
22904 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22905 		public FileDefinitionClauseContext fileDefinitionClause() {
22906 			return getRuleContext(FileDefinitionClauseContext.class,0);
22907 		}
22908 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
22909 		public IgnoredIdentifierContext ignoredIdentifier() {
22910 			return getRuleContext(IgnoredIdentifierContext.class,0);
22911 		}
22912 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22913 		public List<DatabaseOptionContext> databaseOption() {
22914 			return getRuleContexts(DatabaseOptionContext.class);
22915 		}
22916 		public DatabaseOptionContext databaseOption(int i) {
22917 			return getRuleContext(DatabaseOptionContext.class,i);
22918 		}
22919 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
22920 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
22921 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22922 		public TerminalNode COMMA_(int i) {
22923 			return getToken(SQLServerStatementParser.COMMA_, i);
22924 		}
22925 		public CreateDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
22926 			super(parent, invokingState);
22927 		}
22928 		@Override public int getRuleIndex() { return RULE_createDatabaseClause; }
22929 		@Override
22930 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22931 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabaseClause(this);
22932 			else return visitor.visitChildren(this);
22933 		}
22934 	}
22935 
22936 	public final CreateDatabaseClauseContext createDatabaseClause() throws RecognitionException {
22937 		CreateDatabaseClauseContext _localctx = new CreateDatabaseClauseContext(_ctx, getState());
22938 		enterRule(_localctx, 488, RULE_createDatabaseClause);
22939 		int _la;
22940 		try {
22941 			enterOuterAlt(_localctx, 1);
22942 			{
22943 			setState(3276);
22944 			_errHandler.sync(this);
22945 			_la = _input.LA(1);
22946 			if (_la==CONTAINMENT) {
22947 				{
22948 				setState(3273);
22949 				match(CONTAINMENT);
22950 				setState(3274);
22951 				match(EQ_);
22952 				setState(3275);
22953 				_la = _input.LA(1);
22954 				if ( !(_la==NONE || _la==PARTIAL) ) {
22955 				_errHandler.recoverInline(this);
22956 				}
22957 				else {
22958 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22959 					_errHandler.reportMatch(this);
22960 					consume();
22961 				}
22962 				}
22963 			}
22964 
22965 			setState(3279);
22966 			_errHandler.sync(this);
22967 			_la = _input.LA(1);
22968 			if (_la==ON) {
22969 				{
22970 				setState(3278);
22971 				fileDefinitionClause();
22972 				}
22973 			}
22974 
22975 			setState(3283);
22976 			_errHandler.sync(this);
22977 			_la = _input.LA(1);
22978 			if (_la==COLLATE) {
22979 				{
22980 				setState(3281);
22981 				match(COLLATE);
22982 				setState(3282);
22983 				ignoredIdentifier();
22984 				}
22985 			}
22986 
22987 			setState(3294);
22988 			_errHandler.sync(this);
22989 			_la = _input.LA(1);
22990 			if (_la==WITH) {
22991 				{
22992 				setState(3285);
22993 				match(WITH);
22994 				setState(3286);
22995 				databaseOption();
22996 				setState(3291);
22997 				_errHandler.sync(this);
22998 				_la = _input.LA(1);
22999 				while (_la==COMMA_) {
23000 					{
23001 					{
23002 					setState(3287);
23003 					match(COMMA_);
23004 					setState(3288);
23005 					databaseOption();
23006 					}
23007 					}
23008 					setState(3293);
23009 					_errHandler.sync(this);
23010 					_la = _input.LA(1);
23011 				}
23012 				}
23013 			}
23014 
23015 			}
23016 		}
23017 		catch (RecognitionException re) {
23018 			_localctx.exception = re;
23019 			_errHandler.reportError(this, re);
23020 			_errHandler.recover(this, re);
23021 		}
23022 		finally {
23023 			exitRule();
23024 		}
23025 		return _localctx;
23026 	}
23027 
23028 	public static class FileDefinitionClauseContext extends ParserRuleContext {
23029 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23030 		public List<FileSpecContext> fileSpec() {
23031 			return getRuleContexts(FileSpecContext.class);
23032 		}
23033 		public FileSpecContext fileSpec(int i) {
23034 			return getRuleContext(FileSpecContext.class,i);
23035 		}
23036 		public DatabaseLogOnsContext databaseLogOns() {
23037 			return getRuleContext(DatabaseLogOnsContext.class,0);
23038 		}
23039 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
23040 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23041 		public TerminalNode COMMA_(int i) {
23042 			return getToken(SQLServerStatementParser.COMMA_, i);
23043 		}
23044 		public List<DatabaseFileGroupContext> databaseFileGroup() {
23045 			return getRuleContexts(DatabaseFileGroupContext.class);
23046 		}
23047 		public DatabaseFileGroupContext databaseFileGroup(int i) {
23048 			return getRuleContext(DatabaseFileGroupContext.class,i);
23049 		}
23050 		public FileDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
23051 			super(parent, invokingState);
23052 		}
23053 		@Override public int getRuleIndex() { return RULE_fileDefinitionClause; }
23054 		@Override
23055 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23056 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileDefinitionClause(this);
23057 			else return visitor.visitChildren(this);
23058 		}
23059 	}
23060 
23061 	public final FileDefinitionClauseContext fileDefinitionClause() throws RecognitionException {
23062 		FileDefinitionClauseContext _localctx = new FileDefinitionClauseContext(_ctx, getState());
23063 		enterRule(_localctx, 490, RULE_fileDefinitionClause);
23064 		int _la;
23065 		try {
23066 			int _alt;
23067 			enterOuterAlt(_localctx, 1);
23068 			{
23069 			setState(3296);
23070 			match(ON);
23071 			setState(3298);
23072 			_errHandler.sync(this);
23073 			_la = _input.LA(1);
23074 			if (_la==PRIMARY) {
23075 				{
23076 				setState(3297);
23077 				match(PRIMARY);
23078 				}
23079 			}
23080 
23081 			setState(3300);
23082 			fileSpec();
23083 			setState(3305);
23084 			_errHandler.sync(this);
23085 			_alt = getInterpreter().adaptivePredict(_input,312,_ctx);
23086 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
23087 				if ( _alt==1 ) {
23088 					{
23089 					{
23090 					setState(3301);
23091 					match(COMMA_);
23092 					setState(3302);
23093 					fileSpec();
23094 					}
23095 					} 
23096 				}
23097 				setState(3307);
23098 				_errHandler.sync(this);
23099 				_alt = getInterpreter().adaptivePredict(_input,312,_ctx);
23100 			}
23101 			setState(3312);
23102 			_errHandler.sync(this);
23103 			_la = _input.LA(1);
23104 			while (_la==COMMA_) {
23105 				{
23106 				{
23107 				setState(3308);
23108 				match(COMMA_);
23109 				setState(3309);
23110 				databaseFileGroup();
23111 				}
23112 				}
23113 				setState(3314);
23114 				_errHandler.sync(this);
23115 				_la = _input.LA(1);
23116 			}
23117 			setState(3315);
23118 			databaseLogOns();
23119 			}
23120 		}
23121 		catch (RecognitionException re) {
23122 			_localctx.exception = re;
23123 			_errHandler.reportError(this, re);
23124 			_errHandler.recover(this, re);
23125 		}
23126 		finally {
23127 			exitRule();
23128 		}
23129 		return _localctx;
23130 	}
23131 
23132 	public static class DatabaseOptionContext extends ParserRuleContext {
23133 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
23134 		public List<FileStreamOptionContext> fileStreamOption() {
23135 			return getRuleContexts(FileStreamOptionContext.class);
23136 		}
23137 		public FileStreamOptionContext fileStreamOption(int i) {
23138 			return getRuleContext(FileStreamOptionContext.class,i);
23139 		}
23140 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23141 		public TerminalNode COMMA_(int i) {
23142 			return getToken(SQLServerStatementParser.COMMA_, i);
23143 		}
23144 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
23145 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
23146 		public TerminalNode EQ_(int i) {
23147 			return getToken(SQLServerStatementParser.EQ_, i);
23148 		}
23149 		public IgnoredIdentifierContext ignoredIdentifier() {
23150 			return getRuleContext(IgnoredIdentifierContext.class,0);
23151 		}
23152 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
23153 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
23154 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
23155 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23156 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
23157 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
23158 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
23159 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
23160 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
23161 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
23162 		public DatabaseOptionContext(ParserRuleContext parent, int invokingState) {
23163 			super(parent, invokingState);
23164 		}
23165 		@Override public int getRuleIndex() { return RULE_databaseOption; }
23166 		@Override
23167 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23168 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseOption(this);
23169 			else return visitor.visitChildren(this);
23170 		}
23171 	}
23172 
23173 	public final DatabaseOptionContext databaseOption() throws RecognitionException {
23174 		DatabaseOptionContext _localctx = new DatabaseOptionContext(_ctx, getState());
23175 		enterRule(_localctx, 492, RULE_databaseOption);
23176 		int _la;
23177 		try {
23178 			int _alt;
23179 			setState(3351);
23180 			_errHandler.sync(this);
23181 			switch (_input.LA(1)) {
23182 			case FILESTREAM:
23183 				enterOuterAlt(_localctx, 1);
23184 				{
23185 				setState(3317);
23186 				match(FILESTREAM);
23187 				setState(3318);
23188 				fileStreamOption();
23189 				setState(3323);
23190 				_errHandler.sync(this);
23191 				_alt = getInterpreter().adaptivePredict(_input,314,_ctx);
23192 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
23193 					if ( _alt==1 ) {
23194 						{
23195 						{
23196 						setState(3319);
23197 						match(COMMA_);
23198 						setState(3320);
23199 						fileStreamOption();
23200 						}
23201 						} 
23202 					}
23203 					setState(3325);
23204 					_errHandler.sync(this);
23205 					_alt = getInterpreter().adaptivePredict(_input,314,_ctx);
23206 				}
23207 				}
23208 				break;
23209 			case DEFAULT_FULLTEXT_LANGUAGE:
23210 				enterOuterAlt(_localctx, 2);
23211 				{
23212 				setState(3326);
23213 				match(DEFAULT_FULLTEXT_LANGUAGE);
23214 				setState(3327);
23215 				match(EQ_);
23216 				setState(3328);
23217 				ignoredIdentifier();
23218 				}
23219 				break;
23220 			case DEFAULT_LANGUAGE:
23221 				enterOuterAlt(_localctx, 3);
23222 				{
23223 				setState(3329);
23224 				match(DEFAULT_LANGUAGE);
23225 				setState(3330);
23226 				match(EQ_);
23227 				setState(3331);
23228 				ignoredIdentifier();
23229 				}
23230 				break;
23231 			case NESTED_TRIGGERS:
23232 				enterOuterAlt(_localctx, 4);
23233 				{
23234 				setState(3332);
23235 				match(NESTED_TRIGGERS);
23236 				setState(3333);
23237 				match(EQ_);
23238 				setState(3334);
23239 				_la = _input.LA(1);
23240 				if ( !(_la==ON || _la==OFF) ) {
23241 				_errHandler.recoverInline(this);
23242 				}
23243 				else {
23244 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23245 					_errHandler.reportMatch(this);
23246 					consume();
23247 				}
23248 				}
23249 				break;
23250 			case TRANSFORM_NOISE_WORDS:
23251 				enterOuterAlt(_localctx, 5);
23252 				{
23253 				setState(3335);
23254 				match(TRANSFORM_NOISE_WORDS);
23255 				setState(3336);
23256 				match(EQ_);
23257 				setState(3337);
23258 				_la = _input.LA(1);
23259 				if ( !(_la==ON || _la==OFF) ) {
23260 				_errHandler.recoverInline(this);
23261 				}
23262 				else {
23263 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23264 					_errHandler.reportMatch(this);
23265 					consume();
23266 				}
23267 				}
23268 				break;
23269 			case TWO_DIGIT_YEAR_CUTOFF:
23270 				enterOuterAlt(_localctx, 6);
23271 				{
23272 				setState(3338);
23273 				match(TWO_DIGIT_YEAR_CUTOFF);
23274 				setState(3339);
23275 				match(EQ_);
23276 				setState(3340);
23277 				ignoredIdentifier();
23278 				}
23279 				break;
23280 			case DB_CHAINING:
23281 				enterOuterAlt(_localctx, 7);
23282 				{
23283 				setState(3341);
23284 				match(DB_CHAINING);
23285 				setState(3342);
23286 				_la = _input.LA(1);
23287 				if ( !(_la==ON || _la==OFF) ) {
23288 				_errHandler.recoverInline(this);
23289 				}
23290 				else {
23291 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23292 					_errHandler.reportMatch(this);
23293 					consume();
23294 				}
23295 				}
23296 				break;
23297 			case TRUSTWORTHY:
23298 				enterOuterAlt(_localctx, 8);
23299 				{
23300 				setState(3343);
23301 				match(TRUSTWORTHY);
23302 				setState(3344);
23303 				_la = _input.LA(1);
23304 				if ( !(_la==ON || _la==OFF) ) {
23305 				_errHandler.recoverInline(this);
23306 				}
23307 				else {
23308 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23309 					_errHandler.reportMatch(this);
23310 					consume();
23311 				}
23312 				}
23313 				break;
23314 			case PERSISTENT_LOG_BUFFER:
23315 				enterOuterAlt(_localctx, 9);
23316 				{
23317 				setState(3345);
23318 				match(PERSISTENT_LOG_BUFFER);
23319 				setState(3346);
23320 				match(EQ_);
23321 				setState(3347);
23322 				match(ON);
23323 				{
23324 				setState(3348);
23325 				match(DIRECTORY_NAME);
23326 				setState(3349);
23327 				match(EQ_);
23328 				setState(3350);
23329 				ignoredIdentifier();
23330 				}
23331 				}
23332 				break;
23333 			default:
23334 				throw new NoViableAltException(this);
23335 			}
23336 		}
23337 		catch (RecognitionException re) {
23338 			_localctx.exception = re;
23339 			_errHandler.reportError(this, re);
23340 			_errHandler.recover(this, re);
23341 		}
23342 		finally {
23343 			exitRule();
23344 		}
23345 		return _localctx;
23346 	}
23347 
23348 	public static class FileStreamOptionContext extends ParserRuleContext {
23349 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
23350 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23351 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
23352 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
23353 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
23354 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
23355 		public IgnoredIdentifierContext ignoredIdentifier() {
23356 			return getRuleContext(IgnoredIdentifierContext.class,0);
23357 		}
23358 		public FileStreamOptionContext(ParserRuleContext parent, int invokingState) {
23359 			super(parent, invokingState);
23360 		}
23361 		@Override public int getRuleIndex() { return RULE_fileStreamOption; }
23362 		@Override
23363 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23364 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOption(this);
23365 			else return visitor.visitChildren(this);
23366 		}
23367 	}
23368 
23369 	public final FileStreamOptionContext fileStreamOption() throws RecognitionException {
23370 		FileStreamOptionContext _localctx = new FileStreamOptionContext(_ctx, getState());
23371 		enterRule(_localctx, 494, RULE_fileStreamOption);
23372 		int _la;
23373 		try {
23374 			setState(3359);
23375 			_errHandler.sync(this);
23376 			switch (_input.LA(1)) {
23377 			case NON_TRANSACTED_ACCESS:
23378 				enterOuterAlt(_localctx, 1);
23379 				{
23380 				setState(3353);
23381 				match(NON_TRANSACTED_ACCESS);
23382 				setState(3354);
23383 				match(EQ_);
23384 				setState(3355);
23385 				_la = _input.LA(1);
23386 				if ( !(_la==FULL || _la==OFF || _la==READ_ONLY) ) {
23387 				_errHandler.recoverInline(this);
23388 				}
23389 				else {
23390 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23391 					_errHandler.reportMatch(this);
23392 					consume();
23393 				}
23394 				}
23395 				break;
23396 			case DIRECTORY_NAME:
23397 				enterOuterAlt(_localctx, 2);
23398 				{
23399 				setState(3356);
23400 				match(DIRECTORY_NAME);
23401 				setState(3357);
23402 				match(EQ_);
23403 				setState(3358);
23404 				ignoredIdentifier();
23405 				}
23406 				break;
23407 			default:
23408 				throw new NoViableAltException(this);
23409 			}
23410 		}
23411 		catch (RecognitionException re) {
23412 			_localctx.exception = re;
23413 			_errHandler.reportError(this, re);
23414 			_errHandler.recover(this, re);
23415 		}
23416 		finally {
23417 			exitRule();
23418 		}
23419 		return _localctx;
23420 	}
23421 
23422 	public static class FileSpecContext extends ParserRuleContext {
23423 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23424 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
23425 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
23426 		public TerminalNode EQ_(int i) {
23427 			return getToken(SQLServerStatementParser.EQ_, i);
23428 		}
23429 		public IgnoredIdentifierContext ignoredIdentifier() {
23430 			return getRuleContext(IgnoredIdentifierContext.class,0);
23431 		}
23432 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23433 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
23434 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
23435 		public DatabaseFileSpecOptionContext databaseFileSpecOption() {
23436 			return getRuleContext(DatabaseFileSpecOptionContext.class,0);
23437 		}
23438 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23439 		public FileSpecContext(ParserRuleContext parent, int invokingState) {
23440 			super(parent, invokingState);
23441 		}
23442 		@Override public int getRuleIndex() { return RULE_fileSpec; }
23443 		@Override
23444 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23445 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileSpec(this);
23446 			else return visitor.visitChildren(this);
23447 		}
23448 	}
23449 
23450 	public final FileSpecContext fileSpec() throws RecognitionException {
23451 		FileSpecContext _localctx = new FileSpecContext(_ctx, getState());
23452 		enterRule(_localctx, 496, RULE_fileSpec);
23453 		try {
23454 			enterOuterAlt(_localctx, 1);
23455 			{
23456 			setState(3361);
23457 			match(LP_);
23458 			setState(3362);
23459 			match(NAME);
23460 			setState(3363);
23461 			match(EQ_);
23462 			setState(3364);
23463 			ignoredIdentifier();
23464 			setState(3365);
23465 			match(COMMA_);
23466 			setState(3366);
23467 			match(FILENAME);
23468 			setState(3367);
23469 			match(EQ_);
23470 			setState(3368);
23471 			match(STRING_);
23472 			setState(3369);
23473 			databaseFileSpecOption();
23474 			setState(3370);
23475 			match(RP_);
23476 			}
23477 		}
23478 		catch (RecognitionException re) {
23479 			_localctx.exception = re;
23480 			_errHandler.reportError(this, re);
23481 			_errHandler.recover(this, re);
23482 		}
23483 		finally {
23484 			exitRule();
23485 		}
23486 		return _localctx;
23487 	}
23488 
23489 	public static class DatabaseFileSpecOptionContext extends ParserRuleContext {
23490 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23491 		public TerminalNode COMMA_(int i) {
23492 			return getToken(SQLServerStatementParser.COMMA_, i);
23493 		}
23494 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
23495 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
23496 		public TerminalNode EQ_(int i) {
23497 			return getToken(SQLServerStatementParser.EQ_, i);
23498 		}
23499 		public List<NumberLiteralsContext> numberLiterals() {
23500 			return getRuleContexts(NumberLiteralsContext.class);
23501 		}
23502 		public NumberLiteralsContext numberLiterals(int i) {
23503 			return getRuleContext(NumberLiteralsContext.class,i);
23504 		}
23505 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
23506 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
23507 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
23508 		public List<TerminalNode> KB() { return getTokens(SQLServerStatementParser.KB); }
23509 		public TerminalNode KB(int i) {
23510 			return getToken(SQLServerStatementParser.KB, i);
23511 		}
23512 		public List<TerminalNode> MB() { return getTokens(SQLServerStatementParser.MB); }
23513 		public TerminalNode MB(int i) {
23514 			return getToken(SQLServerStatementParser.MB, i);
23515 		}
23516 		public List<TerminalNode> GB() { return getTokens(SQLServerStatementParser.GB); }
23517 		public TerminalNode GB(int i) {
23518 			return getToken(SQLServerStatementParser.GB, i);
23519 		}
23520 		public List<TerminalNode> TB() { return getTokens(SQLServerStatementParser.TB); }
23521 		public TerminalNode TB(int i) {
23522 			return getToken(SQLServerStatementParser.TB, i);
23523 		}
23524 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
23525 		public DatabaseFileSpecOptionContext(ParserRuleContext parent, int invokingState) {
23526 			super(parent, invokingState);
23527 		}
23528 		@Override public int getRuleIndex() { return RULE_databaseFileSpecOption; }
23529 		@Override
23530 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23531 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileSpecOption(this);
23532 			else return visitor.visitChildren(this);
23533 		}
23534 	}
23535 
23536 	public final DatabaseFileSpecOptionContext databaseFileSpecOption() throws RecognitionException {
23537 		DatabaseFileSpecOptionContext _localctx = new DatabaseFileSpecOptionContext(_ctx, getState());
23538 		enterRule(_localctx, 498, RULE_databaseFileSpecOption);
23539 		int _la;
23540 		try {
23541 			enterOuterAlt(_localctx, 1);
23542 			{
23543 			setState(3379);
23544 			_errHandler.sync(this);
23545 			switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) {
23546 			case 1:
23547 				{
23548 				setState(3372);
23549 				match(COMMA_);
23550 				setState(3373);
23551 				match(SIZE);
23552 				setState(3374);
23553 				match(EQ_);
23554 				setState(3375);
23555 				numberLiterals();
23556 				setState(3377);
23557 				_errHandler.sync(this);
23558 				_la = _input.LA(1);
23559 				if (((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (KB - 485)) | (1L << (MB - 485)) | (1L << (GB - 485)) | (1L << (TB - 485)))) != 0)) {
23560 					{
23561 					setState(3376);
23562 					_la = _input.LA(1);
23563 					if ( !(((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (KB - 485)) | (1L << (MB - 485)) | (1L << (GB - 485)) | (1L << (TB - 485)))) != 0)) ) {
23564 					_errHandler.recoverInline(this);
23565 					}
23566 					else {
23567 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23568 						_errHandler.reportMatch(this);
23569 						consume();
23570 					}
23571 					}
23572 				}
23573 
23574 				}
23575 				break;
23576 			}
23577 			setState(3391);
23578 			_errHandler.sync(this);
23579 			switch ( getInterpreter().adaptivePredict(_input,321,_ctx) ) {
23580 			case 1:
23581 				{
23582 				setState(3381);
23583 				match(COMMA_);
23584 				setState(3382);
23585 				match(MAXSIZE);
23586 				setState(3383);
23587 				match(EQ_);
23588 				setState(3389);
23589 				_errHandler.sync(this);
23590 				switch (_input.LA(1)) {
23591 				case PLUS_:
23592 				case MINUS_:
23593 				case NUMBER_:
23594 					{
23595 					setState(3384);
23596 					numberLiterals();
23597 					setState(3386);
23598 					_errHandler.sync(this);
23599 					_la = _input.LA(1);
23600 					if (((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (KB - 485)) | (1L << (MB - 485)) | (1L << (GB - 485)) | (1L << (TB - 485)))) != 0)) {
23601 						{
23602 						setState(3385);
23603 						_la = _input.LA(1);
23604 						if ( !(((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (KB - 485)) | (1L << (MB - 485)) | (1L << (GB - 485)) | (1L << (TB - 485)))) != 0)) ) {
23605 						_errHandler.recoverInline(this);
23606 						}
23607 						else {
23608 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23609 							_errHandler.reportMatch(this);
23610 							consume();
23611 						}
23612 						}
23613 					}
23614 
23615 					}
23616 					break;
23617 				case UNLIMITED:
23618 					{
23619 					setState(3388);
23620 					match(UNLIMITED);
23621 					}
23622 					break;
23623 				default:
23624 					throw new NoViableAltException(this);
23625 				}
23626 				}
23627 				break;
23628 			}
23629 			setState(3400);
23630 			_errHandler.sync(this);
23631 			_la = _input.LA(1);
23632 			if (_la==COMMA_) {
23633 				{
23634 				setState(3393);
23635 				match(COMMA_);
23636 				setState(3394);
23637 				match(FILEGROWTH);
23638 				setState(3395);
23639 				match(EQ_);
23640 				setState(3396);
23641 				numberLiterals();
23642 				setState(3398);
23643 				_errHandler.sync(this);
23644 				_la = _input.LA(1);
23645 				if (_la==MOD_ || ((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (KB - 485)) | (1L << (MB - 485)) | (1L << (GB - 485)) | (1L << (TB - 485)))) != 0)) {
23646 					{
23647 					setState(3397);
23648 					_la = _input.LA(1);
23649 					if ( !(_la==MOD_ || ((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (KB - 485)) | (1L << (MB - 485)) | (1L << (GB - 485)) | (1L << (TB - 485)))) != 0)) ) {
23650 					_errHandler.recoverInline(this);
23651 					}
23652 					else {
23653 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23654 						_errHandler.reportMatch(this);
23655 						consume();
23656 					}
23657 					}
23658 				}
23659 
23660 				}
23661 			}
23662 
23663 			}
23664 		}
23665 		catch (RecognitionException re) {
23666 			_localctx.exception = re;
23667 			_errHandler.reportError(this, re);
23668 			_errHandler.recover(this, re);
23669 		}
23670 		finally {
23671 			exitRule();
23672 		}
23673 		return _localctx;
23674 	}
23675 
23676 	public static class DatabaseFileGroupContext extends ParserRuleContext {
23677 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
23678 		public IgnoredIdentifierContext ignoredIdentifier() {
23679 			return getRuleContext(IgnoredIdentifierContext.class,0);
23680 		}
23681 		public List<FileSpecContext> fileSpec() {
23682 			return getRuleContexts(FileSpecContext.class);
23683 		}
23684 		public FileSpecContext fileSpec(int i) {
23685 			return getRuleContext(FileSpecContext.class,i);
23686 		}
23687 		public DatabaseFileGroupContainsContext databaseFileGroupContains() {
23688 			return getRuleContext(DatabaseFileGroupContainsContext.class,0);
23689 		}
23690 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23691 		public TerminalNode COMMA_(int i) {
23692 			return getToken(SQLServerStatementParser.COMMA_, i);
23693 		}
23694 		public DatabaseFileGroupContext(ParserRuleContext parent, int invokingState) {
23695 			super(parent, invokingState);
23696 		}
23697 		@Override public int getRuleIndex() { return RULE_databaseFileGroup; }
23698 		@Override
23699 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23700 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroup(this);
23701 			else return visitor.visitChildren(this);
23702 		}
23703 	}
23704 
23705 	public final DatabaseFileGroupContext databaseFileGroup() throws RecognitionException {
23706 		DatabaseFileGroupContext _localctx = new DatabaseFileGroupContext(_ctx, getState());
23707 		enterRule(_localctx, 500, RULE_databaseFileGroup);
23708 		try {
23709 			int _alt;
23710 			enterOuterAlt(_localctx, 1);
23711 			{
23712 			setState(3402);
23713 			match(FILEGROUP);
23714 			setState(3403);
23715 			ignoredIdentifier();
23716 			setState(3405);
23717 			_errHandler.sync(this);
23718 			switch ( getInterpreter().adaptivePredict(_input,324,_ctx) ) {
23719 			case 1:
23720 				{
23721 				setState(3404);
23722 				databaseFileGroupContains();
23723 				}
23724 				break;
23725 			}
23726 			setState(3407);
23727 			fileSpec();
23728 			setState(3412);
23729 			_errHandler.sync(this);
23730 			_alt = getInterpreter().adaptivePredict(_input,325,_ctx);
23731 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
23732 				if ( _alt==1 ) {
23733 					{
23734 					{
23735 					setState(3408);
23736 					match(COMMA_);
23737 					setState(3409);
23738 					fileSpec();
23739 					}
23740 					} 
23741 				}
23742 				setState(3414);
23743 				_errHandler.sync(this);
23744 				_alt = getInterpreter().adaptivePredict(_input,325,_ctx);
23745 			}
23746 			}
23747 		}
23748 		catch (RecognitionException re) {
23749 			_localctx.exception = re;
23750 			_errHandler.reportError(this, re);
23751 			_errHandler.recover(this, re);
23752 		}
23753 		finally {
23754 			exitRule();
23755 		}
23756 		return _localctx;
23757 	}
23758 
23759 	public static class DatabaseFileGroupContainsContext extends ParserRuleContext {
23760 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
23761 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
23762 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
23763 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
23764 		public DatabaseFileGroupContainsContext(ParserRuleContext parent, int invokingState) {
23765 			super(parent, invokingState);
23766 		}
23767 		@Override public int getRuleIndex() { return RULE_databaseFileGroupContains; }
23768 		@Override
23769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroupContains(this);
23771 			else return visitor.visitChildren(this);
23772 		}
23773 	}
23774 
23775 	public final DatabaseFileGroupContainsContext databaseFileGroupContains() throws RecognitionException {
23776 		DatabaseFileGroupContainsContext _localctx = new DatabaseFileGroupContainsContext(_ctx, getState());
23777 		enterRule(_localctx, 502, RULE_databaseFileGroupContains);
23778 		int _la;
23779 		try {
23780 			setState(3424);
23781 			_errHandler.sync(this);
23782 			switch ( getInterpreter().adaptivePredict(_input,328,_ctx) ) {
23783 			case 1:
23784 				enterOuterAlt(_localctx, 1);
23785 				{
23786 				setState(3417);
23787 				_errHandler.sync(this);
23788 				_la = _input.LA(1);
23789 				if (_la==CONTAINS) {
23790 					{
23791 					setState(3415);
23792 					match(CONTAINS);
23793 					setState(3416);
23794 					match(FILESTREAM);
23795 					}
23796 				}
23797 
23798 				setState(3420);
23799 				_errHandler.sync(this);
23800 				_la = _input.LA(1);
23801 				if (_la==DEFAULT) {
23802 					{
23803 					setState(3419);
23804 					match(DEFAULT);
23805 					}
23806 				}
23807 
23808 				}
23809 				break;
23810 			case 2:
23811 				enterOuterAlt(_localctx, 2);
23812 				{
23813 				setState(3422);
23814 				match(CONTAINS);
23815 				setState(3423);
23816 				match(MEMORY_OPTIMIZED_DATA);
23817 				}
23818 				break;
23819 			}
23820 		}
23821 		catch (RecognitionException re) {
23822 			_localctx.exception = re;
23823 			_errHandler.reportError(this, re);
23824 			_errHandler.recover(this, re);
23825 		}
23826 		finally {
23827 			exitRule();
23828 		}
23829 		return _localctx;
23830 	}
23831 
23832 	public static class DatabaseLogOnsContext extends ParserRuleContext {
23833 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
23834 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23835 		public List<FileSpecContext> fileSpec() {
23836 			return getRuleContexts(FileSpecContext.class);
23837 		}
23838 		public FileSpecContext fileSpec(int i) {
23839 			return getRuleContext(FileSpecContext.class,i);
23840 		}
23841 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23842 		public TerminalNode COMMA_(int i) {
23843 			return getToken(SQLServerStatementParser.COMMA_, i);
23844 		}
23845 		public DatabaseLogOnsContext(ParserRuleContext parent, int invokingState) {
23846 			super(parent, invokingState);
23847 		}
23848 		@Override public int getRuleIndex() { return RULE_databaseLogOns; }
23849 		@Override
23850 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23851 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseLogOns(this);
23852 			else return visitor.visitChildren(this);
23853 		}
23854 	}
23855 
23856 	public final DatabaseLogOnsContext databaseLogOns() throws RecognitionException {
23857 		DatabaseLogOnsContext _localctx = new DatabaseLogOnsContext(_ctx, getState());
23858 		enterRule(_localctx, 504, RULE_databaseLogOns);
23859 		int _la;
23860 		try {
23861 			enterOuterAlt(_localctx, 1);
23862 			{
23863 			setState(3436);
23864 			_errHandler.sync(this);
23865 			_la = _input.LA(1);
23866 			if (_la==LOG) {
23867 				{
23868 				setState(3426);
23869 				match(LOG);
23870 				setState(3427);
23871 				match(ON);
23872 				setState(3428);
23873 				fileSpec();
23874 				setState(3433);
23875 				_errHandler.sync(this);
23876 				_la = _input.LA(1);
23877 				while (_la==COMMA_) {
23878 					{
23879 					{
23880 					setState(3429);
23881 					match(COMMA_);
23882 					setState(3430);
23883 					fileSpec();
23884 					}
23885 					}
23886 					setState(3435);
23887 					_errHandler.sync(this);
23888 					_la = _input.LA(1);
23889 				}
23890 				}
23891 			}
23892 
23893 			}
23894 		}
23895 		catch (RecognitionException re) {
23896 			_localctx.exception = re;
23897 			_errHandler.reportError(this, re);
23898 			_errHandler.recover(this, re);
23899 		}
23900 		finally {
23901 			exitRule();
23902 		}
23903 		return _localctx;
23904 	}
23905 
23906 	public static class DeclareVariableContext extends ParserRuleContext {
23907 		public TerminalNode DECLARE() { return getToken(SQLServerStatementParser.DECLARE, 0); }
23908 		public List<VariableContext> variable() {
23909 			return getRuleContexts(VariableContext.class);
23910 		}
23911 		public VariableContext variable(int i) {
23912 			return getRuleContext(VariableContext.class,i);
23913 		}
23914 		public TableVariableContext tableVariable() {
23915 			return getRuleContext(TableVariableContext.class,0);
23916 		}
23917 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23918 		public TerminalNode COMMA_(int i) {
23919 			return getToken(SQLServerStatementParser.COMMA_, i);
23920 		}
23921 		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
23922 			super(parent, invokingState);
23923 		}
23924 		@Override public int getRuleIndex() { return RULE_declareVariable; }
23925 		@Override
23926 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23927 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeclareVariable(this);
23928 			else return visitor.visitChildren(this);
23929 		}
23930 	}
23931 
23932 	public final DeclareVariableContext declareVariable() throws RecognitionException {
23933 		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
23934 		enterRule(_localctx, 506, RULE_declareVariable);
23935 		int _la;
23936 		try {
23937 			enterOuterAlt(_localctx, 1);
23938 			{
23939 			setState(3438);
23940 			match(DECLARE);
23941 			setState(3448);
23942 			_errHandler.sync(this);
23943 			switch ( getInterpreter().adaptivePredict(_input,332,_ctx) ) {
23944 			case 1:
23945 				{
23946 				setState(3439);
23947 				variable();
23948 				setState(3444);
23949 				_errHandler.sync(this);
23950 				_la = _input.LA(1);
23951 				while (_la==COMMA_) {
23952 					{
23953 					{
23954 					setState(3440);
23955 					match(COMMA_);
23956 					setState(3441);
23957 					variable();
23958 					}
23959 					}
23960 					setState(3446);
23961 					_errHandler.sync(this);
23962 					_la = _input.LA(1);
23963 				}
23964 				}
23965 				break;
23966 			case 2:
23967 				{
23968 				setState(3447);
23969 				tableVariable();
23970 				}
23971 				break;
23972 			}
23973 			}
23974 		}
23975 		catch (RecognitionException re) {
23976 			_localctx.exception = re;
23977 			_errHandler.reportError(this, re);
23978 			_errHandler.recover(this, re);
23979 		}
23980 		finally {
23981 			exitRule();
23982 		}
23983 		return _localctx;
23984 	}
23985 
23986 	public static class VariableContext extends ParserRuleContext {
23987 		public VariableNameContext variableName() {
23988 			return getRuleContext(VariableNameContext.class,0);
23989 		}
23990 		public DataTypeContext dataType() {
23991 			return getRuleContext(DataTypeContext.class,0);
23992 		}
23993 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
23994 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23995 		public SimpleExprContext simpleExpr() {
23996 			return getRuleContext(SimpleExprContext.class,0);
23997 		}
23998 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
23999 		public VariableContext(ParserRuleContext parent, int invokingState) {
24000 			super(parent, invokingState);
24001 		}
24002 		@Override public int getRuleIndex() { return RULE_variable; }
24003 		@Override
24004 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24005 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariable(this);
24006 			else return visitor.visitChildren(this);
24007 		}
24008 	}
24009 
24010 	public final VariableContext variable() throws RecognitionException {
24011 		VariableContext _localctx = new VariableContext(_ctx, getState());
24012 		enterRule(_localctx, 508, RULE_variable);
24013 		int _la;
24014 		try {
24015 			setState(3462);
24016 			_errHandler.sync(this);
24017 			switch ( getInterpreter().adaptivePredict(_input,335,_ctx) ) {
24018 			case 1:
24019 				enterOuterAlt(_localctx, 1);
24020 				{
24021 				setState(3450);
24022 				variableName();
24023 				setState(3452);
24024 				_errHandler.sync(this);
24025 				_la = _input.LA(1);
24026 				if (_la==AS) {
24027 					{
24028 					setState(3451);
24029 					match(AS);
24030 					}
24031 				}
24032 
24033 				setState(3454);
24034 				dataType();
24035 				setState(3457);
24036 				_errHandler.sync(this);
24037 				switch ( getInterpreter().adaptivePredict(_input,334,_ctx) ) {
24038 				case 1:
24039 					{
24040 					setState(3455);
24041 					match(EQ_);
24042 					setState(3456);
24043 					simpleExpr(0);
24044 					}
24045 					break;
24046 				}
24047 				}
24048 				break;
24049 			case 2:
24050 				enterOuterAlt(_localctx, 2);
24051 				{
24052 				setState(3459);
24053 				variableName();
24054 				setState(3460);
24055 				match(CURSOR);
24056 				}
24057 				break;
24058 			}
24059 		}
24060 		catch (RecognitionException re) {
24061 			_localctx.exception = re;
24062 			_errHandler.reportError(this, re);
24063 			_errHandler.recover(this, re);
24064 		}
24065 		finally {
24066 			exitRule();
24067 		}
24068 		return _localctx;
24069 	}
24070 
24071 	public static class TableVariableContext extends ParserRuleContext {
24072 		public VariableNameContext variableName() {
24073 			return getRuleContext(VariableNameContext.class,0);
24074 		}
24075 		public VariTableTypeDefinitionContext variTableTypeDefinition() {
24076 			return getRuleContext(VariTableTypeDefinitionContext.class,0);
24077 		}
24078 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
24079 		public TableVariableContext(ParserRuleContext parent, int invokingState) {
24080 			super(parent, invokingState);
24081 		}
24082 		@Override public int getRuleIndex() { return RULE_tableVariable; }
24083 		@Override
24084 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24085 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariable(this);
24086 			else return visitor.visitChildren(this);
24087 		}
24088 	}
24089 
24090 	public final TableVariableContext tableVariable() throws RecognitionException {
24091 		TableVariableContext _localctx = new TableVariableContext(_ctx, getState());
24092 		enterRule(_localctx, 510, RULE_tableVariable);
24093 		int _la;
24094 		try {
24095 			enterOuterAlt(_localctx, 1);
24096 			{
24097 			setState(3464);
24098 			variableName();
24099 			setState(3466);
24100 			_errHandler.sync(this);
24101 			_la = _input.LA(1);
24102 			if (_la==AS) {
24103 				{
24104 				setState(3465);
24105 				match(AS);
24106 				}
24107 			}
24108 
24109 			setState(3468);
24110 			variTableTypeDefinition();
24111 			}
24112 		}
24113 		catch (RecognitionException re) {
24114 			_localctx.exception = re;
24115 			_errHandler.reportError(this, re);
24116 			_errHandler.recover(this, re);
24117 		}
24118 		finally {
24119 			exitRule();
24120 		}
24121 		return _localctx;
24122 	}
24123 
24124 	public static class VariTableTypeDefinitionContext extends ParserRuleContext {
24125 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
24126 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24127 		public List<TableVariableClauseContext> tableVariableClause() {
24128 			return getRuleContexts(TableVariableClauseContext.class);
24129 		}
24130 		public TableVariableClauseContext tableVariableClause(int i) {
24131 			return getRuleContext(TableVariableClauseContext.class,i);
24132 		}
24133 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24134 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24135 		public TerminalNode COMMA_(int i) {
24136 			return getToken(SQLServerStatementParser.COMMA_, i);
24137 		}
24138 		public VariTableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
24139 			super(parent, invokingState);
24140 		}
24141 		@Override public int getRuleIndex() { return RULE_variTableTypeDefinition; }
24142 		@Override
24143 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24144 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariTableTypeDefinition(this);
24145 			else return visitor.visitChildren(this);
24146 		}
24147 	}
24148 
24149 	public final VariTableTypeDefinitionContext variTableTypeDefinition() throws RecognitionException {
24150 		VariTableTypeDefinitionContext _localctx = new VariTableTypeDefinitionContext(_ctx, getState());
24151 		enterRule(_localctx, 512, RULE_variTableTypeDefinition);
24152 		int _la;
24153 		try {
24154 			enterOuterAlt(_localctx, 1);
24155 			{
24156 			setState(3470);
24157 			match(TABLE);
24158 			setState(3471);
24159 			match(LP_);
24160 			setState(3472);
24161 			tableVariableClause();
24162 			setState(3477);
24163 			_errHandler.sync(this);
24164 			_la = _input.LA(1);
24165 			while (_la==COMMA_) {
24166 				{
24167 				{
24168 				setState(3473);
24169 				match(COMMA_);
24170 				setState(3474);
24171 				tableVariableClause();
24172 				}
24173 				}
24174 				setState(3479);
24175 				_errHandler.sync(this);
24176 				_la = _input.LA(1);
24177 			}
24178 			setState(3480);
24179 			match(RP_);
24180 			}
24181 		}
24182 		catch (RecognitionException re) {
24183 			_localctx.exception = re;
24184 			_errHandler.reportError(this, re);
24185 			_errHandler.recover(this, re);
24186 		}
24187 		finally {
24188 			exitRule();
24189 		}
24190 		return _localctx;
24191 	}
24192 
24193 	public static class TableVariableClauseContext extends ParserRuleContext {
24194 		public VariableTableColumnDefinitionContext variableTableColumnDefinition() {
24195 			return getRuleContext(VariableTableColumnDefinitionContext.class,0);
24196 		}
24197 		public VariableTableConstraintContext variableTableConstraint() {
24198 			return getRuleContext(VariableTableConstraintContext.class,0);
24199 		}
24200 		public TableVariableClauseContext(ParserRuleContext parent, int invokingState) {
24201 			super(parent, invokingState);
24202 		}
24203 		@Override public int getRuleIndex() { return RULE_tableVariableClause; }
24204 		@Override
24205 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24206 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariableClause(this);
24207 			else return visitor.visitChildren(this);
24208 		}
24209 	}
24210 
24211 	public final TableVariableClauseContext tableVariableClause() throws RecognitionException {
24212 		TableVariableClauseContext _localctx = new TableVariableClauseContext(_ctx, getState());
24213 		enterRule(_localctx, 514, RULE_tableVariableClause);
24214 		try {
24215 			setState(3484);
24216 			_errHandler.sync(this);
24217 			switch (_input.LA(1)) {
24218 			case DOLLAR_:
24219 			case TRUNCATE:
24220 			case SCHEMA:
24221 			case COLUMNS:
24222 			case PRECISION:
24223 			case FUNCTION:
24224 			case TRIGGER:
24225 			case CAST:
24226 			case SUBSTRING:
24227 			case OFF:
24228 			case GROUP:
24229 			case LIMIT:
24230 			case OFFSET:
24231 			case SAVEPOINT:
24232 			case BOOLEAN:
24233 			case ARRAY:
24234 			case DATE:
24235 			case LOCALTIME:
24236 			case LOCALTIMESTAMP:
24237 			case QUARTER:
24238 			case WEEK:
24239 			case DAY:
24240 			case SECOND:
24241 			case MICROSECOND:
24242 			case MAX:
24243 			case MIN:
24244 			case SUM:
24245 			case COUNT:
24246 			case AVG:
24247 			case ENABLE:
24248 			case DISABLE:
24249 			case INSTANCE:
24250 			case DO:
24251 			case DEFINER:
24252 			case SQL:
24253 			case CASCADED:
24254 			case LOCAL:
24255 			case NEXT:
24256 			case NAME:
24257 			case INTEGER:
24258 			case TYPE:
24259 			case TEXT:
24260 			case VIEWS:
24261 			case READ_ONLY:
24262 			case DATABASE:
24263 			case RETURNS:
24264 			case DATEPART:
24265 			case PASSWORD:
24266 			case BINARY:
24267 			case HIDDEN_:
24268 			case MOD:
24269 			case PARTITION:
24270 			case PARTITIONS:
24271 			case TOP:
24272 			case ROW:
24273 			case ROWS:
24274 			case XOR:
24275 			case ALWAYS:
24276 			case ROLE:
24277 			case START:
24278 			case ALGORITHM:
24279 			case AUTO:
24280 			case BLOCKERS:
24281 			case CLUSTERED:
24282 			case NONCLUSTERED:
24283 			case COLUMNSTORE:
24284 			case CONTENT:
24285 			case YEARS:
24286 			case MONTHS:
24287 			case WEEKS:
24288 			case DAYS:
24289 			case MINUTES:
24290 			case DENY:
24291 			case DETERMINISTIC:
24292 			case DISTRIBUTION:
24293 			case DOCUMENT:
24294 			case DURABILITY:
24295 			case ENCRYPTED:
24296 			case FILESTREAM:
24297 			case FILETABLE:
24298 			case FILLFACTOR:
24299 			case FOLLOWING:
24300 			case HASH:
24301 			case HEAP:
24302 			case INBOUND:
24303 			case OUTBOUND:
24304 			case UNBOUNDED:
24305 			case INFINITE:
24306 			case LOGIN:
24307 			case MASKED:
24308 			case MAXDOP:
24309 			case MOVE:
24310 			case NOCHECK:
24311 			case OBJECT:
24312 			case ONLINE:
24313 			case OVER:
24314 			case PAGE:
24315 			case PAUSED:
24316 			case PERIOD:
24317 			case PERSISTED:
24318 			case PRECEDING:
24319 			case RANDOMIZED:
24320 			case RANGE:
24321 			case REBUILD:
24322 			case REPLICATE:
24323 			case REPLICATION:
24324 			case RESUMABLE:
24325 			case ROWGUIDCOL:
24326 			case SAVE:
24327 			case SELF:
24328 			case SPARSE:
24329 			case SWITCH:
24330 			case TRAN:
24331 			case TRANCOUNT:
24332 			case CONTROL:
24333 			case CONCAT:
24334 			case TAKE:
24335 			case OWNERSHIP:
24336 			case DEFINITION:
24337 			case APPLICATION:
24338 			case ASSEMBLY:
24339 			case SYMMETRIC:
24340 			case ASYMMETRIC:
24341 			case SERVER:
24342 			case RECEIVE:
24343 			case CHANGE:
24344 			case TRACE:
24345 			case TRACKING:
24346 			case RESOURCES:
24347 			case SETTINGS:
24348 			case STATE:
24349 			case AVAILABILITY:
24350 			case CREDENTIAL:
24351 			case ENDPOINT:
24352 			case EVENT:
24353 			case NOTIFICATION:
24354 			case LINKED:
24355 			case AUDIT:
24356 			case DDL:
24357 			case XML:
24358 			case IMPERSONATE:
24359 			case SECURABLES:
24360 			case AUTHENTICATE:
24361 			case EXTERNAL:
24362 			case ACCESS:
24363 			case ADMINISTER:
24364 			case BULK:
24365 			case OPERATIONS:
24366 			case UNSAFE:
24367 			case SHUTDOWN:
24368 			case SCOPED:
24369 			case CONFIGURATION:
24370 			case DATASPACE:
24371 			case SERVICE:
24372 			case CERTIFICATE:
24373 			case CONTRACT:
24374 			case ENCRYPTION:
24375 			case MASTER:
24376 			case DATA:
24377 			case SOURCE:
24378 			case FILE:
24379 			case FORMAT:
24380 			case LIBRARY:
24381 			case FULLTEXT:
24382 			case MASK:
24383 			case UNMASK:
24384 			case MESSAGE:
24385 			case REMOTE:
24386 			case BINDING:
24387 			case ROUTE:
24388 			case SECURITY:
24389 			case POLICY:
24390 			case AGGREGATE:
24391 			case QUEUE:
24392 			case RULE:
24393 			case SYNONYM:
24394 			case COLLECTION:
24395 			case SCRIPT:
24396 			case KILL:
24397 			case BACKUP:
24398 			case LOG:
24399 			case SHOWPLAN:
24400 			case SUBSCRIBE:
24401 			case QUERY:
24402 			case NOTIFICATIONS:
24403 			case CHECKPOINT:
24404 			case SEQUENCE:
24405 			case ABORT_AFTER_WAIT:
24406 			case ALLOW_PAGE_LOCKS:
24407 			case ALLOW_ROW_LOCKS:
24408 			case ALL_SPARSE_COLUMNS:
24409 			case BUCKET_COUNT:
24410 			case COLUMNSTORE_ARCHIVE:
24411 			case COLUMN_ENCRYPTION_KEY:
24412 			case COLUMN_SET:
24413 			case COMPRESSION_DELAY:
24414 			case DATABASE_DEAULT:
24415 			case DATA_COMPRESSION:
24416 			case DATA_CONSISTENCY_CHECK:
24417 			case ENCRYPTION_TYPE:
24418 			case SYSTEM_TIME:
24419 			case SYSTEM_VERSIONING:
24420 			case TEXTIMAGE_ON:
24421 			case WAIT_AT_LOW_PRIORITY:
24422 			case STATISTICS_INCREMENTAL:
24423 			case STATISTICS_NORECOMPUTE:
24424 			case ROUND_ROBIN:
24425 			case SCHEMA_AND_DATA:
24426 			case SCHEMA_ONLY:
24427 			case SORT_IN_TEMPDB:
24428 			case IGNORE_DUP_KEY:
24429 			case IMPLICIT_TRANSACTIONS:
24430 			case MAX_DURATION:
24431 			case MEMORY_OPTIMIZED:
24432 			case MIGRATION_STATE:
24433 			case PAD_INDEX:
24434 			case REMOTE_DATA_ARCHIVE:
24435 			case FILESTREAM_ON:
24436 			case FILETABLE_COLLATE_FILENAME:
24437 			case FILETABLE_DIRECTORY:
24438 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
24439 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
24440 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
24441 			case FILTER_PREDICATE:
24442 			case HISTORY_RETENTION_PERIOD:
24443 			case HISTORY_TABLE:
24444 			case LOCK_ESCALATION:
24445 			case DROP_EXISTING:
24446 			case ROW_NUMBER:
24447 			case FIRST:
24448 			case DATETIME2:
24449 			case OUTPUT:
24450 			case INSERTED:
24451 			case DELETED:
24452 			case FILENAME:
24453 			case MAXSIZE:
24454 			case FILEGROWTH:
24455 			case UNLIMITED:
24456 			case KB:
24457 			case MB:
24458 			case GB:
24459 			case TB:
24460 			case MEMORY_OPTIMIZED_DATA:
24461 			case FILEGROUP:
24462 			case NON_TRANSACTED_ACCESS:
24463 			case DB_CHAINING:
24464 			case TRUSTWORTHY:
24465 			case FORWARD_ONLY:
24466 			case KEYSET:
24467 			case FAST_FORWARD:
24468 			case SCROLL_LOCKS:
24469 			case OPTIMISTIC:
24470 			case TYPE_WARNING:
24471 			case SCHEMABINDING:
24472 			case CALLER:
24473 			case OWNER:
24474 			case SNAPSHOT:
24475 			case REPEATABLE:
24476 			case SERIALIZABLE:
24477 			case NATIVE_COMPILATION:
24478 			case VIEW_METADATA:
24479 			case INSTEAD:
24480 			case APPEND:
24481 			case INCREMENT:
24482 			case CACHE:
24483 			case MINVALUE:
24484 			case MAXVALUE:
24485 			case RESTART:
24486 			case LOB_COMPACTION:
24487 			case COMPRESS_ALL_ROW_GROUPS:
24488 			case REORGANIZE:
24489 			case RESUME:
24490 			case PAUSE:
24491 			case ABORT:
24492 			case ACCELERATED_DATABASE_RECOVERY:
24493 			case PERSISTENT_VERSION_STORE_FILEGROUP:
24494 			case IMMEDIATE:
24495 			case NO_WAIT:
24496 			case TARGET_RECOVERY_TIME:
24497 			case SECONDS:
24498 			case HONOR_BROKER_PRIORITY:
24499 			case ERROR_BROKER_CONVERSATIONS:
24500 			case NEW_BROKER:
24501 			case DISABLE_BROKER:
24502 			case ENABLE_BROKER:
24503 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
24504 			case READ_COMMITTED_SNAPSHOT:
24505 			case ALLOW_SNAPSHOT_ISOLATION:
24506 			case RECURSIVE_TRIGGERS:
24507 			case QUOTED_IDENTIFIER:
24508 			case NUMERIC_ROUNDABORT:
24509 			case CONCAT_NULL_YIELDS_NULL:
24510 			case COMPATIBILITY_LEVEL:
24511 			case ARITHABORT:
24512 			case ANSI_WARNINGS:
24513 			case ANSI_PADDING:
24514 			case ANSI_NULLS:
24515 			case ANSI_NULL_DEFAULT:
24516 			case PAGE_VERIFY:
24517 			case CHECKSUM:
24518 			case TORN_PAGE_DETECTION:
24519 			case BULK_LOGGED:
24520 			case RECOVERY:
24521 			case TOTAL_EXECUTION_CPU_TIME_MS:
24522 			case TOTAL_COMPILE_CPU_TIME_MS:
24523 			case STALE_CAPTURE_POLICY_THRESHOLD:
24524 			case EXECUTION_COUNT:
24525 			case QUERY_CAPTURE_POLICY:
24526 			case WAIT_STATS_CAPTURE_MODE:
24527 			case MAX_PLANS_PER_QUERY:
24528 			case QUERY_CAPTURE_MODE:
24529 			case SIZE_BASED_CLEANUP_MODE:
24530 			case INTERVAL_LENGTH_MINUTES:
24531 			case MAX_STORAGE_SIZE_MB:
24532 			case DATA_FLUSH_INTERVAL_SECONDS:
24533 			case CLEANUP_POLICY:
24534 			case CUSTOM:
24535 			case STALE_QUERY_THRESHOLD_DAYS:
24536 			case OPERATION_MODE:
24537 			case QUERY_STORE:
24538 			case CURSOR_DEFAULT:
24539 			case GLOBAL:
24540 			case CURSOR_CLOSE_ON_COMMIT:
24541 			case HOURS:
24542 			case CHANGE_RETENTION:
24543 			case AUTO_CLEANUP:
24544 			case CHANGE_TRACKING:
24545 			case AUTOMATIC_TUNING:
24546 			case FORCE_LAST_GOOD_PLAN:
24547 			case AUTO_UPDATE_STATISTICS_ASYNC:
24548 			case AUTO_UPDATE_STATISTICS:
24549 			case AUTO_SHRINK:
24550 			case AUTO_CREATE_STATISTICS:
24551 			case INCREMENTAL:
24552 			case AUTO_CLOSE:
24553 			case DATA_RETENTION:
24554 			case TEMPORAL_HISTORY_RETENTION:
24555 			case EDITION:
24556 			case MIXED_PAGE_ALLOCATION:
24557 			case DISABLED:
24558 			case ALLOWED:
24559 			case HADR:
24560 			case MULTI_USER:
24561 			case RESTRICTED_USER:
24562 			case SINGLE_USER:
24563 			case OFFLINE:
24564 			case EMERGENCY:
24565 			case SUSPEND:
24566 			case DATE_CORRELATION_OPTIMIZATION:
24567 			case ELASTIC_POOL:
24568 			case SERVICE_OBJECTIVE:
24569 			case DATABASE_NAME:
24570 			case ALLOW_CONNECTIONS:
24571 			case GEO:
24572 			case NAMED:
24573 			case DATEFIRST:
24574 			case BACKUP_STORAGE_REDUNDANCY:
24575 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
24576 			case SECONDARY:
24577 			case FAILOVER:
24578 			case DEFAULT_FULLTEXT_LANGUAGE:
24579 			case DEFAULT_LANGUAGE:
24580 			case INLINE:
24581 			case NESTED_TRIGGERS:
24582 			case TRANSFORM_NOISE_WORDS:
24583 			case TWO_DIGIT_YEAR_CUTOFF:
24584 			case PERSISTENT_LOG_BUFFER:
24585 			case DIRECTORY_NAME:
24586 			case DATEFORMAT:
24587 			case DELAYED_DURABILITY:
24588 			case AUTHORIZATION:
24589 			case TRANSFER:
24590 			case PROVIDER:
24591 			case SEARCH:
24592 			case MEMBER:
24593 			case IDENTIFIER_:
24594 			case DELIMITED_IDENTIFIER_:
24595 				enterOuterAlt(_localctx, 1);
24596 				{
24597 				setState(3482);
24598 				variableTableColumnDefinition();
24599 				}
24600 				break;
24601 			case PRIMARY:
24602 			case UNIQUE:
24603 			case CHECK:
24604 				enterOuterAlt(_localctx, 2);
24605 				{
24606 				setState(3483);
24607 				variableTableConstraint();
24608 				}
24609 				break;
24610 			default:
24611 				throw new NoViableAltException(this);
24612 			}
24613 		}
24614 		catch (RecognitionException re) {
24615 			_localctx.exception = re;
24616 			_errHandler.reportError(this, re);
24617 			_errHandler.recover(this, re);
24618 		}
24619 		finally {
24620 			exitRule();
24621 		}
24622 		return _localctx;
24623 	}
24624 
24625 	public static class VariableTableColumnDefinitionContext extends ParserRuleContext {
24626 		public ColumnNameContext columnName() {
24627 			return getRuleContext(ColumnNameContext.class,0);
24628 		}
24629 		public VariableTableColumnConstraintContext variableTableColumnConstraint() {
24630 			return getRuleContext(VariableTableColumnConstraintContext.class,0);
24631 		}
24632 		public DataTypeNameContext dataTypeName() {
24633 			return getRuleContext(DataTypeNameContext.class,0);
24634 		}
24635 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
24636 		public List<ExprContext> expr() {
24637 			return getRuleContexts(ExprContext.class);
24638 		}
24639 		public ExprContext expr(int i) {
24640 			return getRuleContext(ExprContext.class,i);
24641 		}
24642 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
24643 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
24644 		public CollationNameContext collationName() {
24645 			return getRuleContext(CollationNameContext.class,0);
24646 		}
24647 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
24648 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
24649 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24650 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
24651 		public TerminalNode NUMBER_(int i) {
24652 			return getToken(SQLServerStatementParser.NUMBER_, i);
24653 		}
24654 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
24655 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24656 		public VariableTableColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
24657 			super(parent, invokingState);
24658 		}
24659 		@Override public int getRuleIndex() { return RULE_variableTableColumnDefinition; }
24660 		@Override
24661 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24662 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnDefinition(this);
24663 			else return visitor.visitChildren(this);
24664 		}
24665 	}
24666 
24667 	public final VariableTableColumnDefinitionContext variableTableColumnDefinition() throws RecognitionException {
24668 		VariableTableColumnDefinitionContext _localctx = new VariableTableColumnDefinitionContext(_ctx, getState());
24669 		enterRule(_localctx, 516, RULE_variableTableColumnDefinition);
24670 		int _la;
24671 		try {
24672 			enterOuterAlt(_localctx, 1);
24673 			{
24674 			setState(3486);
24675 			columnName();
24676 			setState(3490);
24677 			_errHandler.sync(this);
24678 			switch (_input.LA(1)) {
24679 			case CHAR:
24680 			case DATE:
24681 			case TIME:
24682 			case INTEGER:
24683 			case REAL:
24684 			case DECIMAL:
24685 			case BIT:
24686 			case SMALLINT:
24687 			case INT:
24688 			case TINYINT:
24689 			case NUMERIC:
24690 			case FLOAT:
24691 			case BIGINT:
24692 			case TEXT:
24693 			case VARCHAR:
24694 			case BINARY:
24695 			case XML:
24696 			case MONEY:
24697 			case SMALLMONEY:
24698 			case DATETIMEOFFSET:
24699 			case DATETIME:
24700 			case DATETIME2:
24701 			case SMALLDATETIME:
24702 			case NCHAR:
24703 			case NVARCHAR:
24704 			case NTEXT:
24705 			case VARBINARY:
24706 			case IMAGE:
24707 			case SQL_VARIANT:
24708 			case UNIQUEIDENTIFIER:
24709 			case HIERARCHYID:
24710 			case GEOMETRY:
24711 			case GEOGRAPHY:
24712 			case IDENTIFIER_:
24713 				{
24714 				setState(3487);
24715 				dataTypeName();
24716 				}
24717 				break;
24718 			case AS:
24719 				{
24720 				setState(3488);
24721 				match(AS);
24722 				setState(3489);
24723 				expr(0);
24724 				}
24725 				break;
24726 			default:
24727 				throw new NoViableAltException(this);
24728 			}
24729 			setState(3494);
24730 			_errHandler.sync(this);
24731 			_la = _input.LA(1);
24732 			if (_la==COLLATE) {
24733 				{
24734 				setState(3492);
24735 				match(COLLATE);
24736 				setState(3493);
24737 				collationName();
24738 				}
24739 			}
24740 
24741 			setState(3508);
24742 			_errHandler.sync(this);
24743 			switch (_input.LA(1)) {
24744 			case RP_:
24745 			case COMMA_:
24746 			case PRIMARY:
24747 			case UNIQUE:
24748 			case WITH:
24749 			case NOT:
24750 			case NULL:
24751 			case DEFAULT:
24752 			case CHECK:
24753 			case ROWGUIDCOL:
24754 				{
24755 				setState(3498);
24756 				_errHandler.sync(this);
24757 				_la = _input.LA(1);
24758 				if (_la==DEFAULT) {
24759 					{
24760 					setState(3496);
24761 					match(DEFAULT);
24762 					setState(3497);
24763 					expr(0);
24764 					}
24765 				}
24766 
24767 				}
24768 				break;
24769 			case IDENTITY:
24770 				{
24771 				setState(3500);
24772 				match(IDENTITY);
24773 				setState(3506);
24774 				_errHandler.sync(this);
24775 				_la = _input.LA(1);
24776 				if (_la==LP_) {
24777 					{
24778 					setState(3501);
24779 					match(LP_);
24780 					setState(3502);
24781 					match(NUMBER_);
24782 					setState(3503);
24783 					match(COMMA_);
24784 					setState(3504);
24785 					match(NUMBER_);
24786 					setState(3505);
24787 					match(RP_);
24788 					}
24789 				}
24790 
24791 				}
24792 				break;
24793 			default:
24794 				throw new NoViableAltException(this);
24795 			}
24796 			setState(3511);
24797 			_errHandler.sync(this);
24798 			_la = _input.LA(1);
24799 			if (_la==ROWGUIDCOL) {
24800 				{
24801 				setState(3510);
24802 				match(ROWGUIDCOL);
24803 				}
24804 			}
24805 
24806 			setState(3513);
24807 			variableTableColumnConstraint();
24808 			}
24809 		}
24810 		catch (RecognitionException re) {
24811 			_localctx.exception = re;
24812 			_errHandler.reportError(this, re);
24813 			_errHandler.recover(this, re);
24814 		}
24815 		finally {
24816 			exitRule();
24817 		}
24818 		return _localctx;
24819 	}
24820 
24821 	public static class VariableTableColumnConstraintContext extends ParserRuleContext {
24822 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
24823 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
24824 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
24825 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
24826 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
24827 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
24828 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24829 		public ExprContext expr() {
24830 			return getRuleContext(ExprContext.class,0);
24831 		}
24832 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24833 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
24834 		public IndexOptionContext indexOption() {
24835 			return getRuleContext(IndexOptionContext.class,0);
24836 		}
24837 		public VariableTableColumnConstraintContext(ParserRuleContext parent, int invokingState) {
24838 			super(parent, invokingState);
24839 		}
24840 		@Override public int getRuleIndex() { return RULE_variableTableColumnConstraint; }
24841 		@Override
24842 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24843 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnConstraint(this);
24844 			else return visitor.visitChildren(this);
24845 		}
24846 	}
24847 
24848 	public final VariableTableColumnConstraintContext variableTableColumnConstraint() throws RecognitionException {
24849 		VariableTableColumnConstraintContext _localctx = new VariableTableColumnConstraintContext(_ctx, getState());
24850 		enterRule(_localctx, 518, RULE_variableTableColumnConstraint);
24851 		try {
24852 			setState(3532);
24853 			_errHandler.sync(this);
24854 			switch ( getInterpreter().adaptivePredict(_input,347,_ctx) ) {
24855 			case 1:
24856 				enterOuterAlt(_localctx, 1);
24857 				{
24858 				setState(3518);
24859 				_errHandler.sync(this);
24860 				switch (_input.LA(1)) {
24861 				case NULL:
24862 					{
24863 					setState(3515);
24864 					match(NULL);
24865 					}
24866 					break;
24867 				case NOT:
24868 					{
24869 					setState(3516);
24870 					match(NOT);
24871 					setState(3517);
24872 					match(NULL);
24873 					}
24874 					break;
24875 				case RP_:
24876 				case COMMA_:
24877 					break;
24878 				default:
24879 					break;
24880 				}
24881 				}
24882 				break;
24883 			case 2:
24884 				enterOuterAlt(_localctx, 2);
24885 				{
24886 				setState(3523);
24887 				_errHandler.sync(this);
24888 				switch (_input.LA(1)) {
24889 				case PRIMARY:
24890 					{
24891 					setState(3520);
24892 					match(PRIMARY);
24893 					setState(3521);
24894 					match(KEY);
24895 					}
24896 					break;
24897 				case UNIQUE:
24898 					{
24899 					setState(3522);
24900 					match(UNIQUE);
24901 					}
24902 					break;
24903 				case RP_:
24904 				case COMMA_:
24905 					break;
24906 				default:
24907 					break;
24908 				}
24909 				}
24910 				break;
24911 			case 3:
24912 				enterOuterAlt(_localctx, 3);
24913 				{
24914 				setState(3525);
24915 				match(CHECK);
24916 				setState(3526);
24917 				match(LP_);
24918 				setState(3527);
24919 				expr(0);
24920 				setState(3528);
24921 				match(RP_);
24922 				}
24923 				break;
24924 			case 4:
24925 				enterOuterAlt(_localctx, 4);
24926 				{
24927 				setState(3530);
24928 				match(WITH);
24929 				setState(3531);
24930 				indexOption();
24931 				}
24932 				break;
24933 			}
24934 		}
24935 		catch (RecognitionException re) {
24936 			_localctx.exception = re;
24937 			_errHandler.reportError(this, re);
24938 			_errHandler.recover(this, re);
24939 		}
24940 		finally {
24941 			exitRule();
24942 		}
24943 		return _localctx;
24944 	}
24945 
24946 	public static class VariableTableConstraintContext extends ParserRuleContext {
24947 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24948 		public List<ColumnNameContext> columnName() {
24949 			return getRuleContexts(ColumnNameContext.class);
24950 		}
24951 		public ColumnNameContext columnName(int i) {
24952 			return getRuleContext(ColumnNameContext.class,i);
24953 		}
24954 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24955 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
24956 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
24957 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
24958 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24959 		public TerminalNode COMMA_(int i) {
24960 			return getToken(SQLServerStatementParser.COMMA_, i);
24961 		}
24962 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
24963 		public ExprContext expr() {
24964 			return getRuleContext(ExprContext.class,0);
24965 		}
24966 		public VariableTableConstraintContext(ParserRuleContext parent, int invokingState) {
24967 			super(parent, invokingState);
24968 		}
24969 		@Override public int getRuleIndex() { return RULE_variableTableConstraint; }
24970 		@Override
24971 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24972 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableConstraint(this);
24973 			else return visitor.visitChildren(this);
24974 		}
24975 	}
24976 
24977 	public final VariableTableConstraintContext variableTableConstraint() throws RecognitionException {
24978 		VariableTableConstraintContext _localctx = new VariableTableConstraintContext(_ctx, getState());
24979 		enterRule(_localctx, 520, RULE_variableTableConstraint);
24980 		int _la;
24981 		try {
24982 			setState(3552);
24983 			_errHandler.sync(this);
24984 			switch (_input.LA(1)) {
24985 			case PRIMARY:
24986 			case UNIQUE:
24987 				enterOuterAlt(_localctx, 1);
24988 				{
24989 				setState(3537);
24990 				_errHandler.sync(this);
24991 				switch (_input.LA(1)) {
24992 				case PRIMARY:
24993 					{
24994 					setState(3534);
24995 					match(PRIMARY);
24996 					setState(3535);
24997 					match(KEY);
24998 					}
24999 					break;
25000 				case UNIQUE:
25001 					{
25002 					setState(3536);
25003 					match(UNIQUE);
25004 					}
25005 					break;
25006 				default:
25007 					throw new NoViableAltException(this);
25008 				}
25009 				setState(3539);
25010 				match(LP_);
25011 				setState(3540);
25012 				columnName();
25013 				setState(3545);
25014 				_errHandler.sync(this);
25015 				_la = _input.LA(1);
25016 				while (_la==COMMA_) {
25017 					{
25018 					{
25019 					setState(3541);
25020 					match(COMMA_);
25021 					setState(3542);
25022 					columnName();
25023 					}
25024 					}
25025 					setState(3547);
25026 					_errHandler.sync(this);
25027 					_la = _input.LA(1);
25028 				}
25029 				setState(3548);
25030 				match(RP_);
25031 				}
25032 				break;
25033 			case CHECK:
25034 				enterOuterAlt(_localctx, 2);
25035 				{
25036 				setState(3550);
25037 				match(CHECK);
25038 				setState(3551);
25039 				expr(0);
25040 				}
25041 				break;
25042 			default:
25043 				throw new NoViableAltException(this);
25044 			}
25045 		}
25046 		catch (RecognitionException re) {
25047 			_localctx.exception = re;
25048 			_errHandler.reportError(this, re);
25049 			_errHandler.recover(this, re);
25050 		}
25051 		finally {
25052 			exitRule();
25053 		}
25054 		return _localctx;
25055 	}
25056 
25057 	public static class SetVariableContext extends ParserRuleContext {
25058 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
25059 		public VariableNameContext variableName() {
25060 			return getRuleContext(VariableNameContext.class,0);
25061 		}
25062 		public SetVariableClauseContext setVariableClause() {
25063 			return getRuleContext(SetVariableClauseContext.class,0);
25064 		}
25065 		public SetVariableContext(ParserRuleContext parent, int invokingState) {
25066 			super(parent, invokingState);
25067 		}
25068 		@Override public int getRuleIndex() { return RULE_setVariable; }
25069 		@Override
25070 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25071 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariable(this);
25072 			else return visitor.visitChildren(this);
25073 		}
25074 	}
25075 
25076 	public final SetVariableContext setVariable() throws RecognitionException {
25077 		SetVariableContext _localctx = new SetVariableContext(_ctx, getState());
25078 		enterRule(_localctx, 522, RULE_setVariable);
25079 		try {
25080 			enterOuterAlt(_localctx, 1);
25081 			{
25082 			setState(3554);
25083 			match(SET);
25084 			setState(3555);
25085 			variableName();
25086 			setState(3556);
25087 			setVariableClause();
25088 			}
25089 		}
25090 		catch (RecognitionException re) {
25091 			_localctx.exception = re;
25092 			_errHandler.reportError(this, re);
25093 			_errHandler.recover(this, re);
25094 		}
25095 		finally {
25096 			exitRule();
25097 		}
25098 		return _localctx;
25099 	}
25100 
25101 	public static class SetVariableClauseContext extends ParserRuleContext {
25102 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25103 		public ExprContext expr() {
25104 			return getRuleContext(ExprContext.class,0);
25105 		}
25106 		public List<IdentifierContext> identifier() {
25107 			return getRuleContexts(IdentifierContext.class);
25108 		}
25109 		public IdentifierContext identifier(int i) {
25110 			return getRuleContext(IdentifierContext.class,i);
25111 		}
25112 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
25113 		public TerminalNode DOT_(int i) {
25114 			return getToken(SQLServerStatementParser.DOT_, i);
25115 		}
25116 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
25117 		public CompoundOperationContext compoundOperation() {
25118 			return getRuleContext(CompoundOperationContext.class,0);
25119 		}
25120 		public CursorVariableContext cursorVariable() {
25121 			return getRuleContext(CursorVariableContext.class,0);
25122 		}
25123 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25124 		public SelectContext select() {
25125 			return getRuleContext(SelectContext.class,0);
25126 		}
25127 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25128 		public SetVariableClauseContext(ParserRuleContext parent, int invokingState) {
25129 			super(parent, invokingState);
25130 		}
25131 		@Override public int getRuleIndex() { return RULE_setVariableClause; }
25132 		@Override
25133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariableClause(this);
25135 			else return visitor.visitChildren(this);
25136 		}
25137 	}
25138 
25139 	public final SetVariableClauseContext setVariableClause() throws RecognitionException {
25140 		SetVariableClauseContext _localctx = new SetVariableClauseContext(_ctx, getState());
25141 		enterRule(_localctx, 524, RULE_setVariableClause);
25142 		int _la;
25143 		try {
25144 			setState(3581);
25145 			_errHandler.sync(this);
25146 			switch ( getInterpreter().adaptivePredict(_input,353,_ctx) ) {
25147 			case 1:
25148 				enterOuterAlt(_localctx, 1);
25149 				{
25150 				setState(3560);
25151 				_errHandler.sync(this);
25152 				_la = _input.LA(1);
25153 				if (_la==DOT_) {
25154 					{
25155 					setState(3558);
25156 					match(DOT_);
25157 					setState(3559);
25158 					identifier();
25159 					}
25160 				}
25161 
25162 				setState(3562);
25163 				match(EQ_);
25164 				setState(3569);
25165 				_errHandler.sync(this);
25166 				switch ( getInterpreter().adaptivePredict(_input,352,_ctx) ) {
25167 				case 1:
25168 					{
25169 					setState(3563);
25170 					expr(0);
25171 					}
25172 					break;
25173 				case 2:
25174 					{
25175 					setState(3564);
25176 					identifier();
25177 					setState(3565);
25178 					match(DOT_);
25179 					setState(3566);
25180 					identifier();
25181 					}
25182 					break;
25183 				case 3:
25184 					{
25185 					setState(3568);
25186 					match(NCHAR_TEXT);
25187 					}
25188 					break;
25189 				}
25190 				}
25191 				break;
25192 			case 2:
25193 				enterOuterAlt(_localctx, 2);
25194 				{
25195 				setState(3571);
25196 				compoundOperation();
25197 				setState(3572);
25198 				expr(0);
25199 				}
25200 				break;
25201 			case 3:
25202 				enterOuterAlt(_localctx, 3);
25203 				{
25204 				setState(3574);
25205 				match(EQ_);
25206 				setState(3575);
25207 				cursorVariable();
25208 				}
25209 				break;
25210 			case 4:
25211 				enterOuterAlt(_localctx, 4);
25212 				{
25213 				setState(3576);
25214 				match(EQ_);
25215 				setState(3577);
25216 				match(LP_);
25217 				setState(3578);
25218 				select();
25219 				setState(3579);
25220 				match(RP_);
25221 				}
25222 				break;
25223 			}
25224 		}
25225 		catch (RecognitionException re) {
25226 			_localctx.exception = re;
25227 			_errHandler.reportError(this, re);
25228 			_errHandler.recover(this, re);
25229 		}
25230 		finally {
25231 			exitRule();
25232 		}
25233 		return _localctx;
25234 	}
25235 
25236 	public static class CursorVariableContext extends ParserRuleContext {
25237 		public VariableNameContext variableName() {
25238 			return getRuleContext(VariableNameContext.class,0);
25239 		}
25240 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
25241 		public CursorClauseContext cursorClause() {
25242 			return getRuleContext(CursorClauseContext.class,0);
25243 		}
25244 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
25245 		public TerminalNode FOR(int i) {
25246 			return getToken(SQLServerStatementParser.FOR, i);
25247 		}
25248 		public SelectContext select() {
25249 			return getRuleContext(SelectContext.class,0);
25250 		}
25251 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
25252 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
25253 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
25254 		public List<NameContext> name() {
25255 			return getRuleContexts(NameContext.class);
25256 		}
25257 		public NameContext name(int i) {
25258 			return getRuleContext(NameContext.class,i);
25259 		}
25260 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25261 		public TerminalNode COMMA_(int i) {
25262 			return getToken(SQLServerStatementParser.COMMA_, i);
25263 		}
25264 		public CursorVariableContext(ParserRuleContext parent, int invokingState) {
25265 			super(parent, invokingState);
25266 		}
25267 		@Override public int getRuleIndex() { return RULE_cursorVariable; }
25268 		@Override
25269 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25270 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorVariable(this);
25271 			else return visitor.visitChildren(this);
25272 		}
25273 	}
25274 
25275 	public final CursorVariableContext cursorVariable() throws RecognitionException {
25276 		CursorVariableContext _localctx = new CursorVariableContext(_ctx, getState());
25277 		enterRule(_localctx, 526, RULE_cursorVariable);
25278 		int _la;
25279 		try {
25280 			setState(3602);
25281 			_errHandler.sync(this);
25282 			switch (_input.LA(1)) {
25283 			case TRUNCATE:
25284 			case SCHEMA:
25285 			case COLUMNS:
25286 			case PRECISION:
25287 			case FUNCTION:
25288 			case TRIGGER:
25289 			case CAST:
25290 			case SUBSTRING:
25291 			case OFF:
25292 			case GROUP:
25293 			case LIMIT:
25294 			case OFFSET:
25295 			case SAVEPOINT:
25296 			case BOOLEAN:
25297 			case ARRAY:
25298 			case DATE:
25299 			case LOCALTIME:
25300 			case LOCALTIMESTAMP:
25301 			case QUARTER:
25302 			case WEEK:
25303 			case DAY:
25304 			case SECOND:
25305 			case MICROSECOND:
25306 			case MAX:
25307 			case MIN:
25308 			case SUM:
25309 			case COUNT:
25310 			case AVG:
25311 			case ENABLE:
25312 			case DISABLE:
25313 			case INSTANCE:
25314 			case DO:
25315 			case DEFINER:
25316 			case SQL:
25317 			case CASCADED:
25318 			case LOCAL:
25319 			case NEXT:
25320 			case NAME:
25321 			case INTEGER:
25322 			case TYPE:
25323 			case TEXT:
25324 			case VIEWS:
25325 			case READ_ONLY:
25326 			case DATABASE:
25327 			case RETURNS:
25328 			case DATEPART:
25329 			case PASSWORD:
25330 			case BINARY:
25331 			case HIDDEN_:
25332 			case MOD:
25333 			case PARTITION:
25334 			case PARTITIONS:
25335 			case TOP:
25336 			case ROW:
25337 			case ROWS:
25338 			case XOR:
25339 			case ALWAYS:
25340 			case ROLE:
25341 			case START:
25342 			case ALGORITHM:
25343 			case AUTO:
25344 			case BLOCKERS:
25345 			case CLUSTERED:
25346 			case NONCLUSTERED:
25347 			case COLUMNSTORE:
25348 			case CONTENT:
25349 			case YEARS:
25350 			case MONTHS:
25351 			case WEEKS:
25352 			case DAYS:
25353 			case MINUTES:
25354 			case DENY:
25355 			case DETERMINISTIC:
25356 			case DISTRIBUTION:
25357 			case DOCUMENT:
25358 			case DURABILITY:
25359 			case ENCRYPTED:
25360 			case FILESTREAM:
25361 			case FILETABLE:
25362 			case FILLFACTOR:
25363 			case FOLLOWING:
25364 			case HASH:
25365 			case HEAP:
25366 			case INBOUND:
25367 			case OUTBOUND:
25368 			case UNBOUNDED:
25369 			case INFINITE:
25370 			case LOGIN:
25371 			case MASKED:
25372 			case MAXDOP:
25373 			case MOVE:
25374 			case NOCHECK:
25375 			case OBJECT:
25376 			case ONLINE:
25377 			case OVER:
25378 			case PAGE:
25379 			case PAUSED:
25380 			case PERIOD:
25381 			case PERSISTED:
25382 			case PRECEDING:
25383 			case RANDOMIZED:
25384 			case RANGE:
25385 			case REBUILD:
25386 			case REPLICATE:
25387 			case REPLICATION:
25388 			case RESUMABLE:
25389 			case ROWGUIDCOL:
25390 			case SAVE:
25391 			case SELF:
25392 			case SPARSE:
25393 			case SWITCH:
25394 			case TRAN:
25395 			case TRANCOUNT:
25396 			case CONTROL:
25397 			case CONCAT:
25398 			case TAKE:
25399 			case OWNERSHIP:
25400 			case DEFINITION:
25401 			case APPLICATION:
25402 			case ASSEMBLY:
25403 			case SYMMETRIC:
25404 			case ASYMMETRIC:
25405 			case SERVER:
25406 			case RECEIVE:
25407 			case CHANGE:
25408 			case TRACE:
25409 			case TRACKING:
25410 			case RESOURCES:
25411 			case SETTINGS:
25412 			case STATE:
25413 			case AVAILABILITY:
25414 			case CREDENTIAL:
25415 			case ENDPOINT:
25416 			case EVENT:
25417 			case NOTIFICATION:
25418 			case LINKED:
25419 			case AUDIT:
25420 			case DDL:
25421 			case XML:
25422 			case IMPERSONATE:
25423 			case SECURABLES:
25424 			case AUTHENTICATE:
25425 			case EXTERNAL:
25426 			case ACCESS:
25427 			case ADMINISTER:
25428 			case BULK:
25429 			case OPERATIONS:
25430 			case UNSAFE:
25431 			case SHUTDOWN:
25432 			case SCOPED:
25433 			case CONFIGURATION:
25434 			case DATASPACE:
25435 			case SERVICE:
25436 			case CERTIFICATE:
25437 			case CONTRACT:
25438 			case ENCRYPTION:
25439 			case MASTER:
25440 			case DATA:
25441 			case SOURCE:
25442 			case FILE:
25443 			case FORMAT:
25444 			case LIBRARY:
25445 			case FULLTEXT:
25446 			case MASK:
25447 			case UNMASK:
25448 			case MESSAGE:
25449 			case REMOTE:
25450 			case BINDING:
25451 			case ROUTE:
25452 			case SECURITY:
25453 			case POLICY:
25454 			case AGGREGATE:
25455 			case QUEUE:
25456 			case RULE:
25457 			case SYNONYM:
25458 			case COLLECTION:
25459 			case SCRIPT:
25460 			case KILL:
25461 			case BACKUP:
25462 			case LOG:
25463 			case SHOWPLAN:
25464 			case SUBSCRIBE:
25465 			case QUERY:
25466 			case NOTIFICATIONS:
25467 			case CHECKPOINT:
25468 			case SEQUENCE:
25469 			case ABORT_AFTER_WAIT:
25470 			case ALLOW_PAGE_LOCKS:
25471 			case ALLOW_ROW_LOCKS:
25472 			case ALL_SPARSE_COLUMNS:
25473 			case BUCKET_COUNT:
25474 			case COLUMNSTORE_ARCHIVE:
25475 			case COLUMN_ENCRYPTION_KEY:
25476 			case COLUMN_SET:
25477 			case COMPRESSION_DELAY:
25478 			case DATABASE_DEAULT:
25479 			case DATA_COMPRESSION:
25480 			case DATA_CONSISTENCY_CHECK:
25481 			case ENCRYPTION_TYPE:
25482 			case SYSTEM_TIME:
25483 			case SYSTEM_VERSIONING:
25484 			case TEXTIMAGE_ON:
25485 			case WAIT_AT_LOW_PRIORITY:
25486 			case STATISTICS_INCREMENTAL:
25487 			case STATISTICS_NORECOMPUTE:
25488 			case ROUND_ROBIN:
25489 			case SCHEMA_AND_DATA:
25490 			case SCHEMA_ONLY:
25491 			case SORT_IN_TEMPDB:
25492 			case IGNORE_DUP_KEY:
25493 			case IMPLICIT_TRANSACTIONS:
25494 			case MAX_DURATION:
25495 			case MEMORY_OPTIMIZED:
25496 			case MIGRATION_STATE:
25497 			case PAD_INDEX:
25498 			case REMOTE_DATA_ARCHIVE:
25499 			case FILESTREAM_ON:
25500 			case FILETABLE_COLLATE_FILENAME:
25501 			case FILETABLE_DIRECTORY:
25502 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
25503 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
25504 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
25505 			case FILTER_PREDICATE:
25506 			case HISTORY_RETENTION_PERIOD:
25507 			case HISTORY_TABLE:
25508 			case LOCK_ESCALATION:
25509 			case DROP_EXISTING:
25510 			case ROW_NUMBER:
25511 			case FIRST:
25512 			case DATETIME2:
25513 			case OUTPUT:
25514 			case INSERTED:
25515 			case DELETED:
25516 			case FILENAME:
25517 			case MAXSIZE:
25518 			case FILEGROWTH:
25519 			case UNLIMITED:
25520 			case KB:
25521 			case MB:
25522 			case GB:
25523 			case TB:
25524 			case MEMORY_OPTIMIZED_DATA:
25525 			case FILEGROUP:
25526 			case NON_TRANSACTED_ACCESS:
25527 			case DB_CHAINING:
25528 			case TRUSTWORTHY:
25529 			case FORWARD_ONLY:
25530 			case KEYSET:
25531 			case FAST_FORWARD:
25532 			case SCROLL_LOCKS:
25533 			case OPTIMISTIC:
25534 			case TYPE_WARNING:
25535 			case SCHEMABINDING:
25536 			case CALLER:
25537 			case OWNER:
25538 			case SNAPSHOT:
25539 			case REPEATABLE:
25540 			case SERIALIZABLE:
25541 			case NATIVE_COMPILATION:
25542 			case VIEW_METADATA:
25543 			case INSTEAD:
25544 			case APPEND:
25545 			case INCREMENT:
25546 			case CACHE:
25547 			case MINVALUE:
25548 			case MAXVALUE:
25549 			case RESTART:
25550 			case LOB_COMPACTION:
25551 			case COMPRESS_ALL_ROW_GROUPS:
25552 			case REORGANIZE:
25553 			case RESUME:
25554 			case PAUSE:
25555 			case ABORT:
25556 			case ACCELERATED_DATABASE_RECOVERY:
25557 			case PERSISTENT_VERSION_STORE_FILEGROUP:
25558 			case IMMEDIATE:
25559 			case NO_WAIT:
25560 			case TARGET_RECOVERY_TIME:
25561 			case SECONDS:
25562 			case HONOR_BROKER_PRIORITY:
25563 			case ERROR_BROKER_CONVERSATIONS:
25564 			case NEW_BROKER:
25565 			case DISABLE_BROKER:
25566 			case ENABLE_BROKER:
25567 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
25568 			case READ_COMMITTED_SNAPSHOT:
25569 			case ALLOW_SNAPSHOT_ISOLATION:
25570 			case RECURSIVE_TRIGGERS:
25571 			case QUOTED_IDENTIFIER:
25572 			case NUMERIC_ROUNDABORT:
25573 			case CONCAT_NULL_YIELDS_NULL:
25574 			case COMPATIBILITY_LEVEL:
25575 			case ARITHABORT:
25576 			case ANSI_WARNINGS:
25577 			case ANSI_PADDING:
25578 			case ANSI_NULLS:
25579 			case ANSI_NULL_DEFAULT:
25580 			case PAGE_VERIFY:
25581 			case CHECKSUM:
25582 			case TORN_PAGE_DETECTION:
25583 			case BULK_LOGGED:
25584 			case RECOVERY:
25585 			case TOTAL_EXECUTION_CPU_TIME_MS:
25586 			case TOTAL_COMPILE_CPU_TIME_MS:
25587 			case STALE_CAPTURE_POLICY_THRESHOLD:
25588 			case EXECUTION_COUNT:
25589 			case QUERY_CAPTURE_POLICY:
25590 			case WAIT_STATS_CAPTURE_MODE:
25591 			case MAX_PLANS_PER_QUERY:
25592 			case QUERY_CAPTURE_MODE:
25593 			case SIZE_BASED_CLEANUP_MODE:
25594 			case INTERVAL_LENGTH_MINUTES:
25595 			case MAX_STORAGE_SIZE_MB:
25596 			case DATA_FLUSH_INTERVAL_SECONDS:
25597 			case CLEANUP_POLICY:
25598 			case CUSTOM:
25599 			case STALE_QUERY_THRESHOLD_DAYS:
25600 			case OPERATION_MODE:
25601 			case QUERY_STORE:
25602 			case CURSOR_DEFAULT:
25603 			case GLOBAL:
25604 			case CURSOR_CLOSE_ON_COMMIT:
25605 			case HOURS:
25606 			case CHANGE_RETENTION:
25607 			case AUTO_CLEANUP:
25608 			case CHANGE_TRACKING:
25609 			case AUTOMATIC_TUNING:
25610 			case FORCE_LAST_GOOD_PLAN:
25611 			case AUTO_UPDATE_STATISTICS_ASYNC:
25612 			case AUTO_UPDATE_STATISTICS:
25613 			case AUTO_SHRINK:
25614 			case AUTO_CREATE_STATISTICS:
25615 			case INCREMENTAL:
25616 			case AUTO_CLOSE:
25617 			case DATA_RETENTION:
25618 			case TEMPORAL_HISTORY_RETENTION:
25619 			case EDITION:
25620 			case MIXED_PAGE_ALLOCATION:
25621 			case DISABLED:
25622 			case ALLOWED:
25623 			case HADR:
25624 			case MULTI_USER:
25625 			case RESTRICTED_USER:
25626 			case SINGLE_USER:
25627 			case OFFLINE:
25628 			case EMERGENCY:
25629 			case SUSPEND:
25630 			case DATE_CORRELATION_OPTIMIZATION:
25631 			case ELASTIC_POOL:
25632 			case SERVICE_OBJECTIVE:
25633 			case DATABASE_NAME:
25634 			case ALLOW_CONNECTIONS:
25635 			case GEO:
25636 			case NAMED:
25637 			case DATEFIRST:
25638 			case BACKUP_STORAGE_REDUNDANCY:
25639 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
25640 			case SECONDARY:
25641 			case FAILOVER:
25642 			case DEFAULT_FULLTEXT_LANGUAGE:
25643 			case DEFAULT_LANGUAGE:
25644 			case INLINE:
25645 			case NESTED_TRIGGERS:
25646 			case TRANSFORM_NOISE_WORDS:
25647 			case TWO_DIGIT_YEAR_CUTOFF:
25648 			case PERSISTENT_LOG_BUFFER:
25649 			case DIRECTORY_NAME:
25650 			case DATEFORMAT:
25651 			case DELAYED_DURABILITY:
25652 			case AUTHORIZATION:
25653 			case TRANSFER:
25654 			case PROVIDER:
25655 			case SEARCH:
25656 			case MEMBER:
25657 			case IDENTIFIER_:
25658 			case DELIMITED_IDENTIFIER_:
25659 				enterOuterAlt(_localctx, 1);
25660 				{
25661 				setState(3583);
25662 				variableName();
25663 				}
25664 				break;
25665 			case CURSOR:
25666 				enterOuterAlt(_localctx, 2);
25667 				{
25668 				setState(3584);
25669 				match(CURSOR);
25670 				setState(3585);
25671 				cursorClause();
25672 				setState(3586);
25673 				match(FOR);
25674 				setState(3587);
25675 				select();
25676 				{
25677 				setState(3588);
25678 				match(FOR);
25679 				setState(3600);
25680 				_errHandler.sync(this);
25681 				switch (_input.LA(1)) {
25682 				case READ_ONLY:
25683 					{
25684 					setState(3589);
25685 					match(READ_ONLY);
25686 					}
25687 					break;
25688 				case UPDATE:
25689 					{
25690 					setState(3590);
25691 					match(UPDATE);
25692 					{
25693 					setState(3591);
25694 					match(OF);
25695 					setState(3592);
25696 					name();
25697 					setState(3597);
25698 					_errHandler.sync(this);
25699 					_la = _input.LA(1);
25700 					while (_la==COMMA_) {
25701 						{
25702 						{
25703 						setState(3593);
25704 						match(COMMA_);
25705 						setState(3594);
25706 						name();
25707 						}
25708 						}
25709 						setState(3599);
25710 						_errHandler.sync(this);
25711 						_la = _input.LA(1);
25712 					}
25713 					}
25714 					}
25715 					break;
25716 				default:
25717 					throw new NoViableAltException(this);
25718 				}
25719 				}
25720 				}
25721 				break;
25722 			default:
25723 				throw new NoViableAltException(this);
25724 			}
25725 		}
25726 		catch (RecognitionException re) {
25727 			_localctx.exception = re;
25728 			_errHandler.reportError(this, re);
25729 			_errHandler.recover(this, re);
25730 		}
25731 		finally {
25732 			exitRule();
25733 		}
25734 		return _localctx;
25735 	}
25736 
25737 	public static class CursorClauseContext extends ParserRuleContext {
25738 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
25739 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
25740 		public TerminalNode SCROLL() { return getToken(SQLServerStatementParser.SCROLL, 0); }
25741 		public TerminalNode STATIC() { return getToken(SQLServerStatementParser.STATIC, 0); }
25742 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
25743 		public TerminalNode DYNAMIC() { return getToken(SQLServerStatementParser.DYNAMIC, 0); }
25744 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
25745 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
25746 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
25747 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
25748 		public CursorClauseContext(ParserRuleContext parent, int invokingState) {
25749 			super(parent, invokingState);
25750 		}
25751 		@Override public int getRuleIndex() { return RULE_cursorClause; }
25752 		@Override
25753 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25754 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorClause(this);
25755 			else return visitor.visitChildren(this);
25756 		}
25757 	}
25758 
25759 	public final CursorClauseContext cursorClause() throws RecognitionException {
25760 		CursorClauseContext _localctx = new CursorClauseContext(_ctx, getState());
25761 		enterRule(_localctx, 528, RULE_cursorClause);
25762 		int _la;
25763 		try {
25764 			enterOuterAlt(_localctx, 1);
25765 			{
25766 			setState(3605);
25767 			_errHandler.sync(this);
25768 			_la = _input.LA(1);
25769 			if (_la==FORWARD_ONLY || _la==SCROLL) {
25770 				{
25771 				setState(3604);
25772 				_la = _input.LA(1);
25773 				if ( !(_la==FORWARD_ONLY || _la==SCROLL) ) {
25774 				_errHandler.recoverInline(this);
25775 				}
25776 				else {
25777 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25778 					_errHandler.reportMatch(this);
25779 					consume();
25780 				}
25781 				}
25782 			}
25783 
25784 			setState(3608);
25785 			_errHandler.sync(this);
25786 			_la = _input.LA(1);
25787 			if (((((_la - 497)) & ~0x3f) == 0 && ((1L << (_la - 497)) & ((1L << (STATIC - 497)) | (1L << (KEYSET - 497)) | (1L << (DYNAMIC - 497)) | (1L << (FAST_FORWARD - 497)))) != 0)) {
25788 				{
25789 				setState(3607);
25790 				_la = _input.LA(1);
25791 				if ( !(((((_la - 497)) & ~0x3f) == 0 && ((1L << (_la - 497)) & ((1L << (STATIC - 497)) | (1L << (KEYSET - 497)) | (1L << (DYNAMIC - 497)) | (1L << (FAST_FORWARD - 497)))) != 0)) ) {
25792 				_errHandler.recoverInline(this);
25793 				}
25794 				else {
25795 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25796 					_errHandler.reportMatch(this);
25797 					consume();
25798 				}
25799 				}
25800 			}
25801 
25802 			setState(3611);
25803 			_errHandler.sync(this);
25804 			_la = _input.LA(1);
25805 			if (_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) {
25806 				{
25807 				setState(3610);
25808 				_la = _input.LA(1);
25809 				if ( !(_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) ) {
25810 				_errHandler.recoverInline(this);
25811 				}
25812 				else {
25813 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25814 					_errHandler.reportMatch(this);
25815 					consume();
25816 				}
25817 				}
25818 			}
25819 
25820 			setState(3614);
25821 			_errHandler.sync(this);
25822 			_la = _input.LA(1);
25823 			if (_la==TYPE_WARNING) {
25824 				{
25825 				setState(3613);
25826 				match(TYPE_WARNING);
25827 				}
25828 			}
25829 
25830 			}
25831 		}
25832 		catch (RecognitionException re) {
25833 			_localctx.exception = re;
25834 			_errHandler.reportError(this, re);
25835 			_errHandler.recover(this, re);
25836 		}
25837 		finally {
25838 			exitRule();
25839 		}
25840 		return _localctx;
25841 	}
25842 
25843 	public static class CompoundOperationContext extends ParserRuleContext {
25844 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
25845 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25846 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
25847 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
25848 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
25849 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
25850 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
25851 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
25852 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
25853 		public CompoundOperationContext(ParserRuleContext parent, int invokingState) {
25854 			super(parent, invokingState);
25855 		}
25856 		@Override public int getRuleIndex() { return RULE_compoundOperation; }
25857 		@Override
25858 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25859 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundOperation(this);
25860 			else return visitor.visitChildren(this);
25861 		}
25862 	}
25863 
25864 	public final CompoundOperationContext compoundOperation() throws RecognitionException {
25865 		CompoundOperationContext _localctx = new CompoundOperationContext(_ctx, getState());
25866 		enterRule(_localctx, 530, RULE_compoundOperation);
25867 		try {
25868 			setState(3632);
25869 			_errHandler.sync(this);
25870 			switch (_input.LA(1)) {
25871 			case PLUS_:
25872 				enterOuterAlt(_localctx, 1);
25873 				{
25874 				setState(3616);
25875 				match(PLUS_);
25876 				setState(3617);
25877 				match(EQ_);
25878 				}
25879 				break;
25880 			case MINUS_:
25881 				enterOuterAlt(_localctx, 2);
25882 				{
25883 				setState(3618);
25884 				match(MINUS_);
25885 				setState(3619);
25886 				match(EQ_);
25887 				}
25888 				break;
25889 			case ASTERISK_:
25890 				enterOuterAlt(_localctx, 3);
25891 				{
25892 				setState(3620);
25893 				match(ASTERISK_);
25894 				setState(3621);
25895 				match(EQ_);
25896 				}
25897 				break;
25898 			case SLASH_:
25899 				enterOuterAlt(_localctx, 4);
25900 				{
25901 				setState(3622);
25902 				match(SLASH_);
25903 				setState(3623);
25904 				match(EQ_);
25905 				}
25906 				break;
25907 			case MOD_:
25908 				enterOuterAlt(_localctx, 5);
25909 				{
25910 				setState(3624);
25911 				match(MOD_);
25912 				setState(3625);
25913 				match(EQ_);
25914 				}
25915 				break;
25916 			case AMPERSAND_:
25917 				enterOuterAlt(_localctx, 6);
25918 				{
25919 				setState(3626);
25920 				match(AMPERSAND_);
25921 				setState(3627);
25922 				match(EQ_);
25923 				}
25924 				break;
25925 			case CARET_:
25926 				enterOuterAlt(_localctx, 7);
25927 				{
25928 				setState(3628);
25929 				match(CARET_);
25930 				setState(3629);
25931 				match(EQ_);
25932 				}
25933 				break;
25934 			case VERTICAL_BAR_:
25935 				enterOuterAlt(_localctx, 8);
25936 				{
25937 				setState(3630);
25938 				match(VERTICAL_BAR_);
25939 				setState(3631);
25940 				match(EQ_);
25941 				}
25942 				break;
25943 			default:
25944 				throw new NoViableAltException(this);
25945 			}
25946 		}
25947 		catch (RecognitionException re) {
25948 			_localctx.exception = re;
25949 			_errHandler.reportError(this, re);
25950 			_errHandler.recover(this, re);
25951 		}
25952 		finally {
25953 			exitRule();
25954 		}
25955 		return _localctx;
25956 	}
25957 
25958 	public static class FuncParametersContext extends ParserRuleContext {
25959 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25960 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25961 		public List<VariableNameContext> variableName() {
25962 			return getRuleContexts(VariableNameContext.class);
25963 		}
25964 		public VariableNameContext variableName(int i) {
25965 			return getRuleContext(VariableNameContext.class,i);
25966 		}
25967 		public List<DataTypeContext> dataType() {
25968 			return getRuleContexts(DataTypeContext.class);
25969 		}
25970 		public DataTypeContext dataType(int i) {
25971 			return getRuleContext(DataTypeContext.class,i);
25972 		}
25973 		public List<TerminalNode> AS() { return getTokens(SQLServerStatementParser.AS); }
25974 		public TerminalNode AS(int i) {
25975 			return getToken(SQLServerStatementParser.AS, i);
25976 		}
25977 		public List<OwnerContext> owner() {
25978 			return getRuleContexts(OwnerContext.class);
25979 		}
25980 		public OwnerContext owner(int i) {
25981 			return getRuleContext(OwnerContext.class,i);
25982 		}
25983 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
25984 		public TerminalNode DOT_(int i) {
25985 			return getToken(SQLServerStatementParser.DOT_, i);
25986 		}
25987 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
25988 		public TerminalNode EQ_(int i) {
25989 			return getToken(SQLServerStatementParser.EQ_, i);
25990 		}
25991 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
25992 			return getRuleContexts(IgnoredIdentifierContext.class);
25993 		}
25994 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
25995 			return getRuleContext(IgnoredIdentifierContext.class,i);
25996 		}
25997 		public List<TerminalNode> READONLY() { return getTokens(SQLServerStatementParser.READONLY); }
25998 		public TerminalNode READONLY(int i) {
25999 			return getToken(SQLServerStatementParser.READONLY, i);
26000 		}
26001 		public FuncParametersContext(ParserRuleContext parent, int invokingState) {
26002 			super(parent, invokingState);
26003 		}
26004 		@Override public int getRuleIndex() { return RULE_funcParameters; }
26005 		@Override
26006 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26007 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncParameters(this);
26008 			else return visitor.visitChildren(this);
26009 		}
26010 	}
26011 
26012 	public final FuncParametersContext funcParameters() throws RecognitionException {
26013 		FuncParametersContext _localctx = new FuncParametersContext(_ctx, getState());
26014 		enterRule(_localctx, 532, RULE_funcParameters);
26015 		int _la;
26016 		try {
26017 			enterOuterAlt(_localctx, 1);
26018 			{
26019 			setState(3634);
26020 			match(LP_);
26021 			setState(3654);
26022 			_errHandler.sync(this);
26023 			_la = _input.LA(1);
26024 			while (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)) | (1L << (ROLE - 184)) | (1L << (START - 184)) | (1L << (ALGORITHM - 184)) | (1L << (AUTO - 184)) | (1L << (BLOCKERS - 184)) | (1L << (CLUSTERED - 184)) | (1L << (NONCLUSTERED - 184)) | (1L << (COLUMNSTORE - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)) | (1L << (RANGE - 248)) | (1L << (REBUILD - 248)) | (1L << (REPLICATE - 248)) | (1L << (REPLICATION - 248)) | (1L << (RESUMABLE - 248)) | (1L << (ROWGUIDCOL - 248)) | (1L << (SAVE - 248)) | (1L << (SELF - 248)) | (1L << (SPARSE - 248)) | (1L << (SWITCH - 248)) | (1L << (TRAN - 248)) | (1L << (TRANCOUNT - 248)) | (1L << (CONTROL - 248)) | (1L << (CONCAT - 248)) | (1L << (TAKE - 248)) | (1L << (OWNERSHIP - 248)) | (1L << (DEFINITION - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)) | (1L << (SOURCE - 312)) | (1L << (FILE - 312)) | (1L << (FORMAT - 312)) | (1L << (LIBRARY - 312)) | (1L << (FULLTEXT - 312)) | (1L << (MASK - 312)) | (1L << (UNMASK - 312)) | (1L << (MESSAGE - 312)) | (1L << (REMOTE - 312)) | (1L << (BINDING - 312)) | (1L << (ROUTE - 312)) | (1L << (SECURITY - 312)) | (1L << (POLICY - 312)) | (1L << (AGGREGATE - 312)) | (1L << (QUEUE - 312)) | (1L << (RULE - 312)) | (1L << (SYNONYM - 312)) | (1L << (COLLECTION - 312)) | (1L << (SCRIPT - 312)) | (1L << (KILL - 312)) | (1L << (BACKUP - 312)) | (1L << (LOG - 312)) | (1L << (SHOWPLAN - 312)) | (1L << (SUBSCRIBE - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILTER_PREDICATE - 376)) | (1L << (HISTORY_RETENTION_PERIOD - 376)) | (1L << (HISTORY_TABLE - 376)) | (1L << (LOCK_ESCALATION - 376)) | (1L << (DROP_EXISTING - 376)) | (1L << (ROW_NUMBER - 376)) | (1L << (FIRST - 376)) | (1L << (DATETIME2 - 376)))) != 0) || ((((_la - 441)) & ~0x3f) == 0 && ((1L << (_la - 441)) & ((1L << (OUTPUT - 441)) | (1L << (INSERTED - 441)) | (1L << (DELETED - 441)) | (1L << (FILENAME - 441)) | (1L << (MAXSIZE - 441)) | (1L << (FILEGROWTH - 441)) | (1L << (UNLIMITED - 441)) | (1L << (KB - 441)) | (1L << (MB - 441)) | (1L << (GB - 441)) | (1L << (TB - 441)) | (1L << (MEMORY_OPTIMIZED_DATA - 441)) | (1L << (FILEGROUP - 441)) | (1L << (NON_TRANSACTED_ACCESS - 441)) | (1L << (DB_CHAINING - 441)) | (1L << (TRUSTWORTHY - 441)) | (1L << (FORWARD_ONLY - 441)) | (1L << (KEYSET - 441)) | (1L << (FAST_FORWARD - 441)) | (1L << (SCROLL_LOCKS - 441)) | (1L << (OPTIMISTIC - 441)) | (1L << (TYPE_WARNING - 441)) | (1L << (SCHEMABINDING - 441)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (CALLER - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 505)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 505)) | (1L << (IMMEDIATE - 505)) | (1L << (NO_WAIT - 505)) | (1L << (TARGET_RECOVERY_TIME - 505)) | (1L << (SECONDS - 505)) | (1L << (HONOR_BROKER_PRIORITY - 505)) | (1L << (ERROR_BROKER_CONVERSATIONS - 505)) | (1L << (NEW_BROKER - 505)) | (1L << (DISABLE_BROKER - 505)) | (1L << (ENABLE_BROKER - 505)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 505)) | (1L << (READ_COMMITTED_SNAPSHOT - 505)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 505)) | (1L << (RECURSIVE_TRIGGERS - 505)) | (1L << (QUOTED_IDENTIFIER - 505)) | (1L << (NUMERIC_ROUNDABORT - 505)) | (1L << (CONCAT_NULL_YIELDS_NULL - 505)) | (1L << (COMPATIBILITY_LEVEL - 505)) | (1L << (ARITHABORT - 505)) | (1L << (ANSI_WARNINGS - 505)) | (1L << (ANSI_PADDING - 505)) | (1L << (ANSI_NULLS - 505)))) != 0) || ((((_la - 569)) & ~0x3f) == 0 && ((1L << (_la - 569)) & ((1L << (ANSI_NULL_DEFAULT - 569)) | (1L << (PAGE_VERIFY - 569)) | (1L << (CHECKSUM - 569)) | (1L << (TORN_PAGE_DETECTION - 569)) | (1L << (BULK_LOGGED - 569)) | (1L << (RECOVERY - 569)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 569)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 569)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 569)) | (1L << (EXECUTION_COUNT - 569)) | (1L << (QUERY_CAPTURE_POLICY - 569)) | (1L << (WAIT_STATS_CAPTURE_MODE - 569)) | (1L << (MAX_PLANS_PER_QUERY - 569)) | (1L << (QUERY_CAPTURE_MODE - 569)) | (1L << (SIZE_BASED_CLEANUP_MODE - 569)) | (1L << (INTERVAL_LENGTH_MINUTES - 569)) | (1L << (MAX_STORAGE_SIZE_MB - 569)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 569)) | (1L << (CLEANUP_POLICY - 569)) | (1L << (CUSTOM - 569)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 569)) | (1L << (OPERATION_MODE - 569)) | (1L << (QUERY_STORE - 569)) | (1L << (CURSOR_DEFAULT - 569)) | (1L << (GLOBAL - 569)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 569)) | (1L << (HOURS - 569)) | (1L << (CHANGE_RETENTION - 569)) | (1L << (AUTO_CLEANUP - 569)) | (1L << (CHANGE_TRACKING - 569)) | (1L << (AUTOMATIC_TUNING - 569)) | (1L << (FORCE_LAST_GOOD_PLAN - 569)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 569)) | (1L << (AUTO_UPDATE_STATISTICS - 569)) | (1L << (AUTO_SHRINK - 569)) | (1L << (AUTO_CREATE_STATISTICS - 569)) | (1L << (INCREMENTAL - 569)) | (1L << (AUTO_CLOSE - 569)) | (1L << (DATA_RETENTION - 569)) | (1L << (TEMPORAL_HISTORY_RETENTION - 569)) | (1L << (EDITION - 569)) | (1L << (MIXED_PAGE_ALLOCATION - 569)) | (1L << (DISABLED - 569)) | (1L << (ALLOWED - 569)) | (1L << (HADR - 569)) | (1L << (MULTI_USER - 569)) | (1L << (RESTRICTED_USER - 569)) | (1L << (SINGLE_USER - 569)) | (1L << (OFFLINE - 569)) | (1L << (EMERGENCY - 569)) | (1L << (SUSPEND - 569)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 569)) | (1L << (ELASTIC_POOL - 569)) | (1L << (SERVICE_OBJECTIVE - 569)) | (1L << (DATABASE_NAME - 569)) | (1L << (ALLOW_CONNECTIONS - 569)) | (1L << (GEO - 569)) | (1L << (NAMED - 569)) | (1L << (DATEFIRST - 569)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 569)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 569)) | (1L << (SECONDARY - 569)) | (1L << (FAILOVER - 569)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 569)))) != 0) || ((((_la - 633)) & ~0x3f) == 0 && ((1L << (_la - 633)) & ((1L << (DEFAULT_LANGUAGE - 633)) | (1L << (INLINE - 633)) | (1L << (NESTED_TRIGGERS - 633)) | (1L << (TRANSFORM_NOISE_WORDS - 633)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 633)) | (1L << (PERSISTENT_LOG_BUFFER - 633)) | (1L << (DIRECTORY_NAME - 633)) | (1L << (DATEFORMAT - 633)) | (1L << (DELAYED_DURABILITY - 633)) | (1L << (AUTHORIZATION - 633)) | (1L << (TRANSFER - 633)) | (1L << (PROVIDER - 633)) | (1L << (SEARCH - 633)) | (1L << (MEMBER - 633)) | (1L << (IDENTIFIER_ - 633)) | (1L << (DELIMITED_IDENTIFIER_ - 633)))) != 0)) {
26025 				{
26026 				{
26027 				setState(3635);
26028 				variableName();
26029 				setState(3637);
26030 				_errHandler.sync(this);
26031 				_la = _input.LA(1);
26032 				if (_la==AS) {
26033 					{
26034 					setState(3636);
26035 					match(AS);
26036 					}
26037 				}
26038 
26039 				setState(3642);
26040 				_errHandler.sync(this);
26041 				switch ( getInterpreter().adaptivePredict(_input,363,_ctx) ) {
26042 				case 1:
26043 					{
26044 					setState(3639);
26045 					owner();
26046 					setState(3640);
26047 					match(DOT_);
26048 					}
26049 					break;
26050 				}
26051 				setState(3644);
26052 				dataType();
26053 				setState(3647);
26054 				_errHandler.sync(this);
26055 				_la = _input.LA(1);
26056 				if (_la==EQ_) {
26057 					{
26058 					setState(3645);
26059 					match(EQ_);
26060 					setState(3646);
26061 					ignoredIdentifier();
26062 					}
26063 				}
26064 
26065 				setState(3650);
26066 				_errHandler.sync(this);
26067 				_la = _input.LA(1);
26068 				if (_la==READONLY) {
26069 					{
26070 					setState(3649);
26071 					match(READONLY);
26072 					}
26073 				}
26074 
26075 				}
26076 				}
26077 				setState(3656);
26078 				_errHandler.sync(this);
26079 				_la = _input.LA(1);
26080 			}
26081 			setState(3657);
26082 			match(RP_);
26083 			}
26084 		}
26085 		catch (RecognitionException re) {
26086 			_localctx.exception = re;
26087 			_errHandler.reportError(this, re);
26088 			_errHandler.recover(this, re);
26089 		}
26090 		finally {
26091 			exitRule();
26092 		}
26093 		return _localctx;
26094 	}
26095 
26096 	public static class FuncReturnsContext extends ParserRuleContext {
26097 		public FuncScalarReturnContext funcScalarReturn() {
26098 			return getRuleContext(FuncScalarReturnContext.class,0);
26099 		}
26100 		public FuncInlineReturnContext funcInlineReturn() {
26101 			return getRuleContext(FuncInlineReturnContext.class,0);
26102 		}
26103 		public FuncMutiReturnContext funcMutiReturn() {
26104 			return getRuleContext(FuncMutiReturnContext.class,0);
26105 		}
26106 		public FuncReturnsContext(ParserRuleContext parent, int invokingState) {
26107 			super(parent, invokingState);
26108 		}
26109 		@Override public int getRuleIndex() { return RULE_funcReturns; }
26110 		@Override
26111 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26112 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncReturns(this);
26113 			else return visitor.visitChildren(this);
26114 		}
26115 	}
26116 
26117 	public final FuncReturnsContext funcReturns() throws RecognitionException {
26118 		FuncReturnsContext _localctx = new FuncReturnsContext(_ctx, getState());
26119 		enterRule(_localctx, 534, RULE_funcReturns);
26120 		try {
26121 			setState(3662);
26122 			_errHandler.sync(this);
26123 			switch ( getInterpreter().adaptivePredict(_input,367,_ctx) ) {
26124 			case 1:
26125 				enterOuterAlt(_localctx, 1);
26126 				{
26127 				setState(3659);
26128 				funcScalarReturn();
26129 				}
26130 				break;
26131 			case 2:
26132 				enterOuterAlt(_localctx, 2);
26133 				{
26134 				setState(3660);
26135 				funcInlineReturn();
26136 				}
26137 				break;
26138 			case 3:
26139 				enterOuterAlt(_localctx, 3);
26140 				{
26141 				setState(3661);
26142 				funcMutiReturn();
26143 				}
26144 				break;
26145 			}
26146 		}
26147 		catch (RecognitionException re) {
26148 			_localctx.exception = re;
26149 			_errHandler.reportError(this, re);
26150 			_errHandler.recover(this, re);
26151 		}
26152 		finally {
26153 			exitRule();
26154 		}
26155 		return _localctx;
26156 	}
26157 
26158 	public static class FuncMutiReturnContext extends ParserRuleContext {
26159 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26160 		public VariableNameContext variableName() {
26161 			return getRuleContext(VariableNameContext.class,0);
26162 		}
26163 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
26164 		public CreateTableDefinitionsContext createTableDefinitions() {
26165 			return getRuleContext(CreateTableDefinitionsContext.class,0);
26166 		}
26167 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
26168 		public CompoundStatementContext compoundStatement() {
26169 			return getRuleContext(CompoundStatementContext.class,0);
26170 		}
26171 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
26172 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
26173 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26174 		public List<FunctionOptionContext> functionOption() {
26175 			return getRuleContexts(FunctionOptionContext.class);
26176 		}
26177 		public FunctionOptionContext functionOption(int i) {
26178 			return getRuleContext(FunctionOptionContext.class,i);
26179 		}
26180 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26181 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26182 		public TerminalNode COMMA_(int i) {
26183 			return getToken(SQLServerStatementParser.COMMA_, i);
26184 		}
26185 		public FuncMutiReturnContext(ParserRuleContext parent, int invokingState) {
26186 			super(parent, invokingState);
26187 		}
26188 		@Override public int getRuleIndex() { return RULE_funcMutiReturn; }
26189 		@Override
26190 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26191 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncMutiReturn(this);
26192 			else return visitor.visitChildren(this);
26193 		}
26194 	}
26195 
26196 	public final FuncMutiReturnContext funcMutiReturn() throws RecognitionException {
26197 		FuncMutiReturnContext _localctx = new FuncMutiReturnContext(_ctx, getState());
26198 		enterRule(_localctx, 536, RULE_funcMutiReturn);
26199 		int _la;
26200 		try {
26201 			enterOuterAlt(_localctx, 1);
26202 			{
26203 			setState(3664);
26204 			match(RETURNS);
26205 			setState(3665);
26206 			variableName();
26207 			setState(3666);
26208 			match(TABLE);
26209 			setState(3667);
26210 			createTableDefinitions();
26211 			setState(3677);
26212 			_errHandler.sync(this);
26213 			_la = _input.LA(1);
26214 			if (_la==WITH) {
26215 				{
26216 				setState(3668);
26217 				match(WITH);
26218 				setState(3669);
26219 				functionOption();
26220 				setState(3674);
26221 				_errHandler.sync(this);
26222 				_la = _input.LA(1);
26223 				while (_la==COMMA_) {
26224 					{
26225 					{
26226 					setState(3670);
26227 					match(COMMA_);
26228 					setState(3671);
26229 					functionOption();
26230 					}
26231 					}
26232 					setState(3676);
26233 					_errHandler.sync(this);
26234 					_la = _input.LA(1);
26235 				}
26236 				}
26237 			}
26238 
26239 			setState(3680);
26240 			_errHandler.sync(this);
26241 			_la = _input.LA(1);
26242 			if (_la==AS) {
26243 				{
26244 				setState(3679);
26245 				match(AS);
26246 				}
26247 			}
26248 
26249 			setState(3682);
26250 			match(BEGIN);
26251 			setState(3683);
26252 			compoundStatement();
26253 			setState(3684);
26254 			match(RETURN);
26255 			setState(3685);
26256 			match(END);
26257 			}
26258 		}
26259 		catch (RecognitionException re) {
26260 			_localctx.exception = re;
26261 			_errHandler.reportError(this, re);
26262 			_errHandler.recover(this, re);
26263 		}
26264 		finally {
26265 			exitRule();
26266 		}
26267 		return _localctx;
26268 	}
26269 
26270 	public static class FuncInlineReturnContext extends ParserRuleContext {
26271 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26272 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
26273 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
26274 		public SelectContext select() {
26275 			return getRuleContext(SelectContext.class,0);
26276 		}
26277 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26278 		public List<FunctionOptionContext> functionOption() {
26279 			return getRuleContexts(FunctionOptionContext.class);
26280 		}
26281 		public FunctionOptionContext functionOption(int i) {
26282 			return getRuleContext(FunctionOptionContext.class,i);
26283 		}
26284 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26285 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26286 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26287 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26288 		public TerminalNode COMMA_(int i) {
26289 			return getToken(SQLServerStatementParser.COMMA_, i);
26290 		}
26291 		public FuncInlineReturnContext(ParserRuleContext parent, int invokingState) {
26292 			super(parent, invokingState);
26293 		}
26294 		@Override public int getRuleIndex() { return RULE_funcInlineReturn; }
26295 		@Override
26296 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26297 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncInlineReturn(this);
26298 			else return visitor.visitChildren(this);
26299 		}
26300 	}
26301 
26302 	public final FuncInlineReturnContext funcInlineReturn() throws RecognitionException {
26303 		FuncInlineReturnContext _localctx = new FuncInlineReturnContext(_ctx, getState());
26304 		enterRule(_localctx, 538, RULE_funcInlineReturn);
26305 		int _la;
26306 		try {
26307 			enterOuterAlt(_localctx, 1);
26308 			{
26309 			setState(3687);
26310 			match(RETURNS);
26311 			setState(3688);
26312 			match(TABLE);
26313 			setState(3698);
26314 			_errHandler.sync(this);
26315 			_la = _input.LA(1);
26316 			if (_la==WITH) {
26317 				{
26318 				setState(3689);
26319 				match(WITH);
26320 				setState(3690);
26321 				functionOption();
26322 				setState(3695);
26323 				_errHandler.sync(this);
26324 				_la = _input.LA(1);
26325 				while (_la==COMMA_) {
26326 					{
26327 					{
26328 					setState(3691);
26329 					match(COMMA_);
26330 					setState(3692);
26331 					functionOption();
26332 					}
26333 					}
26334 					setState(3697);
26335 					_errHandler.sync(this);
26336 					_la = _input.LA(1);
26337 				}
26338 				}
26339 			}
26340 
26341 			setState(3701);
26342 			_errHandler.sync(this);
26343 			_la = _input.LA(1);
26344 			if (_la==AS) {
26345 				{
26346 				setState(3700);
26347 				match(AS);
26348 				}
26349 			}
26350 
26351 			setState(3703);
26352 			match(RETURN);
26353 			setState(3705);
26354 			_errHandler.sync(this);
26355 			_la = _input.LA(1);
26356 			if (_la==LP_) {
26357 				{
26358 				setState(3704);
26359 				match(LP_);
26360 				}
26361 			}
26362 
26363 			setState(3707);
26364 			select();
26365 			setState(3709);
26366 			_errHandler.sync(this);
26367 			_la = _input.LA(1);
26368 			if (_la==RP_) {
26369 				{
26370 				setState(3708);
26371 				match(RP_);
26372 				}
26373 			}
26374 
26375 			}
26376 		}
26377 		catch (RecognitionException re) {
26378 			_localctx.exception = re;
26379 			_errHandler.reportError(this, re);
26380 			_errHandler.recover(this, re);
26381 		}
26382 		finally {
26383 			exitRule();
26384 		}
26385 		return _localctx;
26386 	}
26387 
26388 	public static class FuncScalarReturnContext extends ParserRuleContext {
26389 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26390 		public DataTypeContext dataType() {
26391 			return getRuleContext(DataTypeContext.class,0);
26392 		}
26393 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
26394 		public CompoundStatementContext compoundStatement() {
26395 			return getRuleContext(CompoundStatementContext.class,0);
26396 		}
26397 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
26398 		public ExprContext expr() {
26399 			return getRuleContext(ExprContext.class,0);
26400 		}
26401 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26402 		public List<FunctionOptionContext> functionOption() {
26403 			return getRuleContexts(FunctionOptionContext.class);
26404 		}
26405 		public FunctionOptionContext functionOption(int i) {
26406 			return getRuleContext(FunctionOptionContext.class,i);
26407 		}
26408 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26409 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26410 		public TerminalNode COMMA_(int i) {
26411 			return getToken(SQLServerStatementParser.COMMA_, i);
26412 		}
26413 		public FuncScalarReturnContext(ParserRuleContext parent, int invokingState) {
26414 			super(parent, invokingState);
26415 		}
26416 		@Override public int getRuleIndex() { return RULE_funcScalarReturn; }
26417 		@Override
26418 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26419 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncScalarReturn(this);
26420 			else return visitor.visitChildren(this);
26421 		}
26422 	}
26423 
26424 	public final FuncScalarReturnContext funcScalarReturn() throws RecognitionException {
26425 		FuncScalarReturnContext _localctx = new FuncScalarReturnContext(_ctx, getState());
26426 		enterRule(_localctx, 540, RULE_funcScalarReturn);
26427 		int _la;
26428 		try {
26429 			enterOuterAlt(_localctx, 1);
26430 			{
26431 			setState(3711);
26432 			match(RETURNS);
26433 			setState(3712);
26434 			dataType();
26435 			setState(3722);
26436 			_errHandler.sync(this);
26437 			_la = _input.LA(1);
26438 			if (_la==WITH) {
26439 				{
26440 				setState(3713);
26441 				match(WITH);
26442 				setState(3714);
26443 				functionOption();
26444 				setState(3719);
26445 				_errHandler.sync(this);
26446 				_la = _input.LA(1);
26447 				while (_la==COMMA_) {
26448 					{
26449 					{
26450 					setState(3715);
26451 					match(COMMA_);
26452 					setState(3716);
26453 					functionOption();
26454 					}
26455 					}
26456 					setState(3721);
26457 					_errHandler.sync(this);
26458 					_la = _input.LA(1);
26459 				}
26460 				}
26461 			}
26462 
26463 			setState(3725);
26464 			_errHandler.sync(this);
26465 			_la = _input.LA(1);
26466 			if (_la==AS) {
26467 				{
26468 				setState(3724);
26469 				match(AS);
26470 				}
26471 			}
26472 
26473 			setState(3727);
26474 			match(BEGIN);
26475 			setState(3728);
26476 			compoundStatement();
26477 			setState(3729);
26478 			match(RETURN);
26479 			setState(3730);
26480 			expr(0);
26481 			}
26482 		}
26483 		catch (RecognitionException re) {
26484 			_localctx.exception = re;
26485 			_errHandler.reportError(this, re);
26486 			_errHandler.recover(this, re);
26487 		}
26488 		finally {
26489 			exitRule();
26490 		}
26491 		return _localctx;
26492 	}
26493 
26494 	public static class TableTypeDefinitionContext extends ParserRuleContext {
26495 		public ColumnDefinitionContext columnDefinition() {
26496 			return getRuleContext(ColumnDefinitionContext.class,0);
26497 		}
26498 		public ColumnConstraintContext columnConstraint() {
26499 			return getRuleContext(ColumnConstraintContext.class,0);
26500 		}
26501 		public ComputedColumnDefinitionContext computedColumnDefinition() {
26502 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
26503 		}
26504 		public List<TableConstraintContext> tableConstraint() {
26505 			return getRuleContexts(TableConstraintContext.class);
26506 		}
26507 		public TableConstraintContext tableConstraint(int i) {
26508 			return getRuleContext(TableConstraintContext.class,i);
26509 		}
26510 		public TableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
26511 			super(parent, invokingState);
26512 		}
26513 		@Override public int getRuleIndex() { return RULE_tableTypeDefinition; }
26514 		@Override
26515 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26516 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableTypeDefinition(this);
26517 			else return visitor.visitChildren(this);
26518 		}
26519 	}
26520 
26521 	public final TableTypeDefinitionContext tableTypeDefinition() throws RecognitionException {
26522 		TableTypeDefinitionContext _localctx = new TableTypeDefinitionContext(_ctx, getState());
26523 		enterRule(_localctx, 542, RULE_tableTypeDefinition);
26524 		int _la;
26525 		try {
26526 			enterOuterAlt(_localctx, 1);
26527 			{
26528 			setState(3736);
26529 			_errHandler.sync(this);
26530 			switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) {
26531 			case 1:
26532 				{
26533 				setState(3732);
26534 				columnDefinition();
26535 				setState(3733);
26536 				columnConstraint();
26537 				}
26538 				break;
26539 			case 2:
26540 				{
26541 				setState(3735);
26542 				computedColumnDefinition();
26543 				}
26544 				break;
26545 			}
26546 			setState(3741);
26547 			_errHandler.sync(this);
26548 			_la = _input.LA(1);
26549 			while (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (CONSTRAINT - 31)) | (1L << (PRIMARY - 31)) | (1L << (UNIQUE - 31)) | (1L << (FOREIGN - 31)) | (1L << (KEY - 31)))) != 0) || _la==CHECK) {
26550 				{
26551 				{
26552 				setState(3738);
26553 				tableConstraint();
26554 				}
26555 				}
26556 				setState(3743);
26557 				_errHandler.sync(this);
26558 				_la = _input.LA(1);
26559 			}
26560 			}
26561 		}
26562 		catch (RecognitionException re) {
26563 			_localctx.exception = re;
26564 			_errHandler.reportError(this, re);
26565 			_errHandler.recover(this, re);
26566 		}
26567 		finally {
26568 			exitRule();
26569 		}
26570 		return _localctx;
26571 	}
26572 
26573 	public static class CompoundStatementContext extends ParserRuleContext {
26574 		public List<ValidStatementContext> validStatement() {
26575 			return getRuleContexts(ValidStatementContext.class);
26576 		}
26577 		public ValidStatementContext validStatement(int i) {
26578 			return getRuleContext(ValidStatementContext.class,i);
26579 		}
26580 		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
26581 			super(parent, invokingState);
26582 		}
26583 		@Override public int getRuleIndex() { return RULE_compoundStatement; }
26584 		@Override
26585 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26586 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundStatement(this);
26587 			else return visitor.visitChildren(this);
26588 		}
26589 	}
26590 
26591 	public final CompoundStatementContext compoundStatement() throws RecognitionException {
26592 		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
26593 		enterRule(_localctx, 544, RULE_compoundStatement);
26594 		int _la;
26595 		try {
26596 			enterOuterAlt(_localctx, 1);
26597 			{
26598 			setState(3747);
26599 			_errHandler.sync(this);
26600 			_la = _input.LA(1);
26601 			while (((((_la - 46)) & ~0x3f) == 0 && ((1L << (_la - 46)) & ((1L << (SELECT - 46)) | (1L << (INSERT - 46)) | (1L << (UPDATE - 46)) | (1L << (DELETE - 46)) | (1L << (CREATE - 46)) | (1L << (ALTER - 46)) | (1L << (DROP - 46)) | (1L << (TRUNCATE - 46)) | (1L << (SET - 46)) | (1L << (WITH - 46)))) != 0) || _la==DECLARE) {
26602 				{
26603 				{
26604 				setState(3744);
26605 				validStatement();
26606 				}
26607 				}
26608 				setState(3749);
26609 				_errHandler.sync(this);
26610 				_la = _input.LA(1);
26611 			}
26612 			}
26613 		}
26614 		catch (RecognitionException re) {
26615 			_localctx.exception = re;
26616 			_errHandler.reportError(this, re);
26617 			_errHandler.recover(this, re);
26618 		}
26619 		finally {
26620 			exitRule();
26621 		}
26622 		return _localctx;
26623 	}
26624 
26625 	public static class FunctionOptionContext extends ParserRuleContext {
26626 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
26627 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
26628 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
26629 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
26630 		public TerminalNode NULL(int i) {
26631 			return getToken(SQLServerStatementParser.NULL, i);
26632 		}
26633 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
26634 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
26635 		public TerminalNode CALLED() { return getToken(SQLServerStatementParser.CALLED, 0); }
26636 		public ExecuteAsClauseContext executeAsClause() {
26637 			return getRuleContext(ExecuteAsClauseContext.class,0);
26638 		}
26639 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
26640 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26641 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
26642 		public FunctionOptionContext(ParserRuleContext parent, int invokingState) {
26643 			super(parent, invokingState);
26644 		}
26645 		@Override public int getRuleIndex() { return RULE_functionOption; }
26646 		@Override
26647 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26648 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionOption(this);
26649 			else return visitor.visitChildren(this);
26650 		}
26651 	}
26652 
26653 	public final FunctionOptionContext functionOption() throws RecognitionException {
26654 		FunctionOptionContext _localctx = new FunctionOptionContext(_ctx, getState());
26655 		enterRule(_localctx, 546, RULE_functionOption);
26656 		int _la;
26657 		try {
26658 			setState(3775);
26659 			_errHandler.sync(this);
26660 			switch ( getInterpreter().adaptivePredict(_input,387,_ctx) ) {
26661 			case 1:
26662 				enterOuterAlt(_localctx, 1);
26663 				{
26664 				setState(3751);
26665 				_errHandler.sync(this);
26666 				_la = _input.LA(1);
26667 				if (_la==ENCRYPTION) {
26668 					{
26669 					setState(3750);
26670 					match(ENCRYPTION);
26671 					}
26672 				}
26673 
26674 				}
26675 				break;
26676 			case 2:
26677 				enterOuterAlt(_localctx, 2);
26678 				{
26679 				setState(3754);
26680 				_errHandler.sync(this);
26681 				_la = _input.LA(1);
26682 				if (_la==SCHEMABINDING) {
26683 					{
26684 					setState(3753);
26685 					match(SCHEMABINDING);
26686 					}
26687 				}
26688 
26689 				}
26690 				break;
26691 			case 3:
26692 				enterOuterAlt(_localctx, 3);
26693 				{
26694 				setState(3765);
26695 				_errHandler.sync(this);
26696 				switch (_input.LA(1)) {
26697 				case RETURNS:
26698 					{
26699 					setState(3756);
26700 					match(RETURNS);
26701 					setState(3757);
26702 					match(NULL);
26703 					setState(3758);
26704 					match(ON);
26705 					setState(3759);
26706 					match(NULL);
26707 					setState(3760);
26708 					match(INPUT);
26709 					}
26710 					break;
26711 				case CALLED:
26712 					{
26713 					setState(3761);
26714 					match(CALLED);
26715 					setState(3762);
26716 					match(ON);
26717 					setState(3763);
26718 					match(NULL);
26719 					setState(3764);
26720 					match(INPUT);
26721 					}
26722 					break;
26723 				case COMMA_:
26724 				case AS:
26725 				case BEGIN:
26726 				case RETURN:
26727 					break;
26728 				default:
26729 					break;
26730 				}
26731 				}
26732 				break;
26733 			case 4:
26734 				enterOuterAlt(_localctx, 4);
26735 				{
26736 				setState(3768);
26737 				_errHandler.sync(this);
26738 				_la = _input.LA(1);
26739 				if (_la==EXECUTE || _la==EXEC) {
26740 					{
26741 					setState(3767);
26742 					executeAsClause();
26743 					}
26744 				}
26745 
26746 				}
26747 				break;
26748 			case 5:
26749 				enterOuterAlt(_localctx, 5);
26750 				{
26751 				setState(3773);
26752 				_errHandler.sync(this);
26753 				_la = _input.LA(1);
26754 				if (_la==INLINE) {
26755 					{
26756 					setState(3770);
26757 					match(INLINE);
26758 					setState(3771);
26759 					match(EQ_);
26760 					setState(3772);
26761 					_la = _input.LA(1);
26762 					if ( !(_la==ON || _la==OFF) ) {
26763 					_errHandler.recoverInline(this);
26764 					}
26765 					else {
26766 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26767 						_errHandler.reportMatch(this);
26768 						consume();
26769 					}
26770 					}
26771 				}
26772 
26773 				}
26774 				break;
26775 			}
26776 		}
26777 		catch (RecognitionException re) {
26778 			_localctx.exception = re;
26779 			_errHandler.reportError(this, re);
26780 			_errHandler.recover(this, re);
26781 		}
26782 		finally {
26783 			exitRule();
26784 		}
26785 		return _localctx;
26786 	}
26787 
26788 	public static class ValidStatementContext extends ParserRuleContext {
26789 		public CreateTableContext createTable() {
26790 			return getRuleContext(CreateTableContext.class,0);
26791 		}
26792 		public AlterTableContext alterTable() {
26793 			return getRuleContext(AlterTableContext.class,0);
26794 		}
26795 		public DropTableContext dropTable() {
26796 			return getRuleContext(DropTableContext.class,0);
26797 		}
26798 		public TruncateTableContext truncateTable() {
26799 			return getRuleContext(TruncateTableContext.class,0);
26800 		}
26801 		public InsertContext insert() {
26802 			return getRuleContext(InsertContext.class,0);
26803 		}
26804 		public UpdateContext update() {
26805 			return getRuleContext(UpdateContext.class,0);
26806 		}
26807 		public DeleteContext delete() {
26808 			return getRuleContext(DeleteContext.class,0);
26809 		}
26810 		public SelectContext select() {
26811 			return getRuleContext(SelectContext.class,0);
26812 		}
26813 		public SetVariableContext setVariable() {
26814 			return getRuleContext(SetVariableContext.class,0);
26815 		}
26816 		public DeclareVariableContext declareVariable() {
26817 			return getRuleContext(DeclareVariableContext.class,0);
26818 		}
26819 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
26820 		public ValidStatementContext(ParserRuleContext parent, int invokingState) {
26821 			super(parent, invokingState);
26822 		}
26823 		@Override public int getRuleIndex() { return RULE_validStatement; }
26824 		@Override
26825 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26826 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitValidStatement(this);
26827 			else return visitor.visitChildren(this);
26828 		}
26829 	}
26830 
26831 	public final ValidStatementContext validStatement() throws RecognitionException {
26832 		ValidStatementContext _localctx = new ValidStatementContext(_ctx, getState());
26833 		enterRule(_localctx, 548, RULE_validStatement);
26834 		try {
26835 			enterOuterAlt(_localctx, 1);
26836 			{
26837 			setState(3787);
26838 			_errHandler.sync(this);
26839 			switch ( getInterpreter().adaptivePredict(_input,388,_ctx) ) {
26840 			case 1:
26841 				{
26842 				setState(3777);
26843 				createTable();
26844 				}
26845 				break;
26846 			case 2:
26847 				{
26848 				setState(3778);
26849 				alterTable();
26850 				}
26851 				break;
26852 			case 3:
26853 				{
26854 				setState(3779);
26855 				dropTable();
26856 				}
26857 				break;
26858 			case 4:
26859 				{
26860 				setState(3780);
26861 				truncateTable();
26862 				}
26863 				break;
26864 			case 5:
26865 				{
26866 				setState(3781);
26867 				insert();
26868 				}
26869 				break;
26870 			case 6:
26871 				{
26872 				setState(3782);
26873 				update();
26874 				}
26875 				break;
26876 			case 7:
26877 				{
26878 				setState(3783);
26879 				delete();
26880 				}
26881 				break;
26882 			case 8:
26883 				{
26884 				setState(3784);
26885 				select();
26886 				}
26887 				break;
26888 			case 9:
26889 				{
26890 				setState(3785);
26891 				setVariable();
26892 				}
26893 				break;
26894 			case 10:
26895 				{
26896 				setState(3786);
26897 				declareVariable();
26898 				}
26899 				break;
26900 			}
26901 			setState(3790);
26902 			_errHandler.sync(this);
26903 			switch ( getInterpreter().adaptivePredict(_input,389,_ctx) ) {
26904 			case 1:
26905 				{
26906 				setState(3789);
26907 				match(SEMI_);
26908 				}
26909 				break;
26910 			}
26911 			}
26912 		}
26913 		catch (RecognitionException re) {
26914 			_localctx.exception = re;
26915 			_errHandler.reportError(this, re);
26916 			_errHandler.recover(this, re);
26917 		}
26918 		finally {
26919 			exitRule();
26920 		}
26921 		return _localctx;
26922 	}
26923 
26924 	public static class ProcParametersContext extends ParserRuleContext {
26925 		public List<ProcParameterContext> procParameter() {
26926 			return getRuleContexts(ProcParameterContext.class);
26927 		}
26928 		public ProcParameterContext procParameter(int i) {
26929 			return getRuleContext(ProcParameterContext.class,i);
26930 		}
26931 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26932 		public TerminalNode COMMA_(int i) {
26933 			return getToken(SQLServerStatementParser.COMMA_, i);
26934 		}
26935 		public ProcParametersContext(ParserRuleContext parent, int invokingState) {
26936 			super(parent, invokingState);
26937 		}
26938 		@Override public int getRuleIndex() { return RULE_procParameters; }
26939 		@Override
26940 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26941 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameters(this);
26942 			else return visitor.visitChildren(this);
26943 		}
26944 	}
26945 
26946 	public final ProcParametersContext procParameters() throws RecognitionException {
26947 		ProcParametersContext _localctx = new ProcParametersContext(_ctx, getState());
26948 		enterRule(_localctx, 550, RULE_procParameters);
26949 		int _la;
26950 		try {
26951 			enterOuterAlt(_localctx, 1);
26952 			{
26953 			setState(3800);
26954 			_errHandler.sync(this);
26955 			_la = _input.LA(1);
26956 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)) | (1L << (ROLE - 184)) | (1L << (START - 184)) | (1L << (ALGORITHM - 184)) | (1L << (AUTO - 184)) | (1L << (BLOCKERS - 184)) | (1L << (CLUSTERED - 184)) | (1L << (NONCLUSTERED - 184)) | (1L << (COLUMNSTORE - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)) | (1L << (RANGE - 248)) | (1L << (REBUILD - 248)) | (1L << (REPLICATE - 248)) | (1L << (REPLICATION - 248)) | (1L << (RESUMABLE - 248)) | (1L << (ROWGUIDCOL - 248)) | (1L << (SAVE - 248)) | (1L << (SELF - 248)) | (1L << (SPARSE - 248)) | (1L << (SWITCH - 248)) | (1L << (TRAN - 248)) | (1L << (TRANCOUNT - 248)) | (1L << (CONTROL - 248)) | (1L << (CONCAT - 248)) | (1L << (TAKE - 248)) | (1L << (OWNERSHIP - 248)) | (1L << (DEFINITION - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)) | (1L << (SOURCE - 312)) | (1L << (FILE - 312)) | (1L << (FORMAT - 312)) | (1L << (LIBRARY - 312)) | (1L << (FULLTEXT - 312)) | (1L << (MASK - 312)) | (1L << (UNMASK - 312)) | (1L << (MESSAGE - 312)) | (1L << (REMOTE - 312)) | (1L << (BINDING - 312)) | (1L << (ROUTE - 312)) | (1L << (SECURITY - 312)) | (1L << (POLICY - 312)) | (1L << (AGGREGATE - 312)) | (1L << (QUEUE - 312)) | (1L << (RULE - 312)) | (1L << (SYNONYM - 312)) | (1L << (COLLECTION - 312)) | (1L << (SCRIPT - 312)) | (1L << (KILL - 312)) | (1L << (BACKUP - 312)) | (1L << (LOG - 312)) | (1L << (SHOWPLAN - 312)) | (1L << (SUBSCRIBE - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILTER_PREDICATE - 376)) | (1L << (HISTORY_RETENTION_PERIOD - 376)) | (1L << (HISTORY_TABLE - 376)) | (1L << (LOCK_ESCALATION - 376)) | (1L << (DROP_EXISTING - 376)) | (1L << (ROW_NUMBER - 376)) | (1L << (FIRST - 376)) | (1L << (DATETIME2 - 376)))) != 0) || ((((_la - 441)) & ~0x3f) == 0 && ((1L << (_la - 441)) & ((1L << (OUTPUT - 441)) | (1L << (INSERTED - 441)) | (1L << (DELETED - 441)) | (1L << (FILENAME - 441)) | (1L << (MAXSIZE - 441)) | (1L << (FILEGROWTH - 441)) | (1L << (UNLIMITED - 441)) | (1L << (KB - 441)) | (1L << (MB - 441)) | (1L << (GB - 441)) | (1L << (TB - 441)) | (1L << (MEMORY_OPTIMIZED_DATA - 441)) | (1L << (FILEGROUP - 441)) | (1L << (NON_TRANSACTED_ACCESS - 441)) | (1L << (DB_CHAINING - 441)) | (1L << (TRUSTWORTHY - 441)) | (1L << (FORWARD_ONLY - 441)) | (1L << (KEYSET - 441)) | (1L << (FAST_FORWARD - 441)) | (1L << (SCROLL_LOCKS - 441)) | (1L << (OPTIMISTIC - 441)) | (1L << (TYPE_WARNING - 441)) | (1L << (SCHEMABINDING - 441)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (CALLER - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 505)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 505)) | (1L << (IMMEDIATE - 505)) | (1L << (NO_WAIT - 505)) | (1L << (TARGET_RECOVERY_TIME - 505)) | (1L << (SECONDS - 505)) | (1L << (HONOR_BROKER_PRIORITY - 505)) | (1L << (ERROR_BROKER_CONVERSATIONS - 505)) | (1L << (NEW_BROKER - 505)) | (1L << (DISABLE_BROKER - 505)) | (1L << (ENABLE_BROKER - 505)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 505)) | (1L << (READ_COMMITTED_SNAPSHOT - 505)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 505)) | (1L << (RECURSIVE_TRIGGERS - 505)) | (1L << (QUOTED_IDENTIFIER - 505)) | (1L << (NUMERIC_ROUNDABORT - 505)) | (1L << (CONCAT_NULL_YIELDS_NULL - 505)) | (1L << (COMPATIBILITY_LEVEL - 505)) | (1L << (ARITHABORT - 505)) | (1L << (ANSI_WARNINGS - 505)) | (1L << (ANSI_PADDING - 505)) | (1L << (ANSI_NULLS - 505)))) != 0) || ((((_la - 569)) & ~0x3f) == 0 && ((1L << (_la - 569)) & ((1L << (ANSI_NULL_DEFAULT - 569)) | (1L << (PAGE_VERIFY - 569)) | (1L << (CHECKSUM - 569)) | (1L << (TORN_PAGE_DETECTION - 569)) | (1L << (BULK_LOGGED - 569)) | (1L << (RECOVERY - 569)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 569)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 569)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 569)) | (1L << (EXECUTION_COUNT - 569)) | (1L << (QUERY_CAPTURE_POLICY - 569)) | (1L << (WAIT_STATS_CAPTURE_MODE - 569)) | (1L << (MAX_PLANS_PER_QUERY - 569)) | (1L << (QUERY_CAPTURE_MODE - 569)) | (1L << (SIZE_BASED_CLEANUP_MODE - 569)) | (1L << (INTERVAL_LENGTH_MINUTES - 569)) | (1L << (MAX_STORAGE_SIZE_MB - 569)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 569)) | (1L << (CLEANUP_POLICY - 569)) | (1L << (CUSTOM - 569)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 569)) | (1L << (OPERATION_MODE - 569)) | (1L << (QUERY_STORE - 569)) | (1L << (CURSOR_DEFAULT - 569)) | (1L << (GLOBAL - 569)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 569)) | (1L << (HOURS - 569)) | (1L << (CHANGE_RETENTION - 569)) | (1L << (AUTO_CLEANUP - 569)) | (1L << (CHANGE_TRACKING - 569)) | (1L << (AUTOMATIC_TUNING - 569)) | (1L << (FORCE_LAST_GOOD_PLAN - 569)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 569)) | (1L << (AUTO_UPDATE_STATISTICS - 569)) | (1L << (AUTO_SHRINK - 569)) | (1L << (AUTO_CREATE_STATISTICS - 569)) | (1L << (INCREMENTAL - 569)) | (1L << (AUTO_CLOSE - 569)) | (1L << (DATA_RETENTION - 569)) | (1L << (TEMPORAL_HISTORY_RETENTION - 569)) | (1L << (EDITION - 569)) | (1L << (MIXED_PAGE_ALLOCATION - 569)) | (1L << (DISABLED - 569)) | (1L << (ALLOWED - 569)) | (1L << (HADR - 569)) | (1L << (MULTI_USER - 569)) | (1L << (RESTRICTED_USER - 569)) | (1L << (SINGLE_USER - 569)) | (1L << (OFFLINE - 569)) | (1L << (EMERGENCY - 569)) | (1L << (SUSPEND - 569)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 569)) | (1L << (ELASTIC_POOL - 569)) | (1L << (SERVICE_OBJECTIVE - 569)) | (1L << (DATABASE_NAME - 569)) | (1L << (ALLOW_CONNECTIONS - 569)) | (1L << (GEO - 569)) | (1L << (NAMED - 569)) | (1L << (DATEFIRST - 569)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 569)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 569)) | (1L << (SECONDARY - 569)) | (1L << (FAILOVER - 569)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 569)))) != 0) || ((((_la - 633)) & ~0x3f) == 0 && ((1L << (_la - 633)) & ((1L << (DEFAULT_LANGUAGE - 633)) | (1L << (INLINE - 633)) | (1L << (NESTED_TRIGGERS - 633)) | (1L << (TRANSFORM_NOISE_WORDS - 633)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 633)) | (1L << (PERSISTENT_LOG_BUFFER - 633)) | (1L << (DIRECTORY_NAME - 633)) | (1L << (DATEFORMAT - 633)) | (1L << (DELAYED_DURABILITY - 633)) | (1L << (AUTHORIZATION - 633)) | (1L << (TRANSFER - 633)) | (1L << (PROVIDER - 633)) | (1L << (SEARCH - 633)) | (1L << (MEMBER - 633)) | (1L << (IDENTIFIER_ - 633)) | (1L << (DELIMITED_IDENTIFIER_ - 633)))) != 0)) {
26957 				{
26958 				setState(3792);
26959 				procParameter();
26960 				setState(3797);
26961 				_errHandler.sync(this);
26962 				_la = _input.LA(1);
26963 				while (_la==COMMA_) {
26964 					{
26965 					{
26966 					setState(3793);
26967 					match(COMMA_);
26968 					setState(3794);
26969 					procParameter();
26970 					}
26971 					}
26972 					setState(3799);
26973 					_errHandler.sync(this);
26974 					_la = _input.LA(1);
26975 				}
26976 				}
26977 			}
26978 
26979 			}
26980 		}
26981 		catch (RecognitionException re) {
26982 			_localctx.exception = re;
26983 			_errHandler.reportError(this, re);
26984 			_errHandler.recover(this, re);
26985 		}
26986 		finally {
26987 			exitRule();
26988 		}
26989 		return _localctx;
26990 	}
26991 
26992 	public static class ProcParameterContext extends ParserRuleContext {
26993 		public VariableContext variable() {
26994 			return getRuleContext(VariableContext.class,0);
26995 		}
26996 		public TerminalNode VARYING() { return getToken(SQLServerStatementParser.VARYING, 0); }
26997 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26998 		public LiteralsContext literals() {
26999 			return getRuleContext(LiteralsContext.class,0);
27000 		}
27001 		public TerminalNode OUT() { return getToken(SQLServerStatementParser.OUT, 0); }
27002 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
27003 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
27004 		public ProcParameterContext(ParserRuleContext parent, int invokingState) {
27005 			super(parent, invokingState);
27006 		}
27007 		@Override public int getRuleIndex() { return RULE_procParameter; }
27008 		@Override
27009 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27010 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameter(this);
27011 			else return visitor.visitChildren(this);
27012 		}
27013 	}
27014 
27015 	public final ProcParameterContext procParameter() throws RecognitionException {
27016 		ProcParameterContext _localctx = new ProcParameterContext(_ctx, getState());
27017 		enterRule(_localctx, 552, RULE_procParameter);
27018 		int _la;
27019 		try {
27020 			enterOuterAlt(_localctx, 1);
27021 			{
27022 			setState(3802);
27023 			variable();
27024 			setState(3804);
27025 			_errHandler.sync(this);
27026 			_la = _input.LA(1);
27027 			if (_la==VARYING) {
27028 				{
27029 				setState(3803);
27030 				match(VARYING);
27031 				}
27032 			}
27033 
27034 			setState(3808);
27035 			_errHandler.sync(this);
27036 			_la = _input.LA(1);
27037 			if (_la==EQ_) {
27038 				{
27039 				setState(3806);
27040 				match(EQ_);
27041 				setState(3807);
27042 				literals();
27043 				}
27044 			}
27045 
27046 			setState(3811);
27047 			_errHandler.sync(this);
27048 			_la = _input.LA(1);
27049 			if (_la==READONLY || _la==OUTPUT || _la==OUT) {
27050 				{
27051 				setState(3810);
27052 				_la = _input.LA(1);
27053 				if ( !(_la==READONLY || _la==OUTPUT || _la==OUT) ) {
27054 				_errHandler.recoverInline(this);
27055 				}
27056 				else {
27057 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27058 					_errHandler.reportMatch(this);
27059 					consume();
27060 				}
27061 				}
27062 			}
27063 
27064 			}
27065 		}
27066 		catch (RecognitionException re) {
27067 			_localctx.exception = re;
27068 			_errHandler.reportError(this, re);
27069 			_errHandler.recover(this, re);
27070 		}
27071 		finally {
27072 			exitRule();
27073 		}
27074 		return _localctx;
27075 	}
27076 
27077 	public static class CreateOrAlterProcClauseContext extends ParserRuleContext {
27078 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27079 		public ProcAsClauseContext procAsClause() {
27080 			return getRuleContext(ProcAsClauseContext.class,0);
27081 		}
27082 		public WithCreateProcOptionContext withCreateProcOption() {
27083 			return getRuleContext(WithCreateProcOptionContext.class,0);
27084 		}
27085 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
27086 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
27087 		public CreateOrAlterProcClauseContext(ParserRuleContext parent, int invokingState) {
27088 			super(parent, invokingState);
27089 		}
27090 		@Override public int getRuleIndex() { return RULE_createOrAlterProcClause; }
27091 		@Override
27092 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27093 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterProcClause(this);
27094 			else return visitor.visitChildren(this);
27095 		}
27096 	}
27097 
27098 	public final CreateOrAlterProcClauseContext createOrAlterProcClause() throws RecognitionException {
27099 		CreateOrAlterProcClauseContext _localctx = new CreateOrAlterProcClauseContext(_ctx, getState());
27100 		enterRule(_localctx, 554, RULE_createOrAlterProcClause);
27101 		int _la;
27102 		try {
27103 			enterOuterAlt(_localctx, 1);
27104 			{
27105 			setState(3814);
27106 			_errHandler.sync(this);
27107 			_la = _input.LA(1);
27108 			if (_la==WITH) {
27109 				{
27110 				setState(3813);
27111 				withCreateProcOption();
27112 				}
27113 			}
27114 
27115 			setState(3818);
27116 			_errHandler.sync(this);
27117 			_la = _input.LA(1);
27118 			if (_la==FOR) {
27119 				{
27120 				setState(3816);
27121 				match(FOR);
27122 				setState(3817);
27123 				match(REPLICATION);
27124 				}
27125 			}
27126 
27127 			setState(3820);
27128 			match(AS);
27129 			setState(3821);
27130 			procAsClause();
27131 			}
27132 		}
27133 		catch (RecognitionException re) {
27134 			_localctx.exception = re;
27135 			_errHandler.reportError(this, re);
27136 			_errHandler.recover(this, re);
27137 		}
27138 		finally {
27139 			exitRule();
27140 		}
27141 		return _localctx;
27142 	}
27143 
27144 	public static class WithCreateProcOptionContext extends ParserRuleContext {
27145 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27146 		public List<ProcOptionContext> procOption() {
27147 			return getRuleContexts(ProcOptionContext.class);
27148 		}
27149 		public ProcOptionContext procOption(int i) {
27150 			return getRuleContext(ProcOptionContext.class,i);
27151 		}
27152 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27153 		public TerminalNode COMMA_(int i) {
27154 			return getToken(SQLServerStatementParser.COMMA_, i);
27155 		}
27156 		public WithCreateProcOptionContext(ParserRuleContext parent, int invokingState) {
27157 			super(parent, invokingState);
27158 		}
27159 		@Override public int getRuleIndex() { return RULE_withCreateProcOption; }
27160 		@Override
27161 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27162 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCreateProcOption(this);
27163 			else return visitor.visitChildren(this);
27164 		}
27165 	}
27166 
27167 	public final WithCreateProcOptionContext withCreateProcOption() throws RecognitionException {
27168 		WithCreateProcOptionContext _localctx = new WithCreateProcOptionContext(_ctx, getState());
27169 		enterRule(_localctx, 556, RULE_withCreateProcOption);
27170 		int _la;
27171 		try {
27172 			enterOuterAlt(_localctx, 1);
27173 			{
27174 			setState(3823);
27175 			match(WITH);
27176 			setState(3832);
27177 			_errHandler.sync(this);
27178 			_la = _input.LA(1);
27179 			if (((((_la - 301)) & ~0x3f) == 0 && ((1L << (_la - 301)) & ((1L << (EXECUTE - 301)) | (1L << (EXEC - 301)) | (1L << (ENCRYPTION - 301)))) != 0) || ((((_la - 472)) & ~0x3f) == 0 && ((1L << (_la - 472)) & ((1L << (RECOMPILE - 472)) | (1L << (SCHEMABINDING - 472)) | (1L << (NATIVE_COMPILATION - 472)))) != 0)) {
27180 				{
27181 				setState(3824);
27182 				procOption();
27183 				setState(3829);
27184 				_errHandler.sync(this);
27185 				_la = _input.LA(1);
27186 				while (_la==COMMA_) {
27187 					{
27188 					{
27189 					setState(3825);
27190 					match(COMMA_);
27191 					setState(3826);
27192 					procOption();
27193 					}
27194 					}
27195 					setState(3831);
27196 					_errHandler.sync(this);
27197 					_la = _input.LA(1);
27198 				}
27199 				}
27200 			}
27201 
27202 			}
27203 		}
27204 		catch (RecognitionException re) {
27205 			_localctx.exception = re;
27206 			_errHandler.reportError(this, re);
27207 			_errHandler.recover(this, re);
27208 		}
27209 		finally {
27210 			exitRule();
27211 		}
27212 		return _localctx;
27213 	}
27214 
27215 	public static class ProcOptionContext extends ParserRuleContext {
27216 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27217 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
27218 		public ExecuteAsClauseContext executeAsClause() {
27219 			return getRuleContext(ExecuteAsClauseContext.class,0);
27220 		}
27221 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
27222 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27223 		public ProcOptionContext(ParserRuleContext parent, int invokingState) {
27224 			super(parent, invokingState);
27225 		}
27226 		@Override public int getRuleIndex() { return RULE_procOption; }
27227 		@Override
27228 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27229 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcOption(this);
27230 			else return visitor.visitChildren(this);
27231 		}
27232 	}
27233 
27234 	public final ProcOptionContext procOption() throws RecognitionException {
27235 		ProcOptionContext _localctx = new ProcOptionContext(_ctx, getState());
27236 		enterRule(_localctx, 558, RULE_procOption);
27237 		try {
27238 			setState(3839);
27239 			_errHandler.sync(this);
27240 			switch (_input.LA(1)) {
27241 			case ENCRYPTION:
27242 				enterOuterAlt(_localctx, 1);
27243 				{
27244 				setState(3834);
27245 				match(ENCRYPTION);
27246 				}
27247 				break;
27248 			case RECOMPILE:
27249 				enterOuterAlt(_localctx, 2);
27250 				{
27251 				setState(3835);
27252 				match(RECOMPILE);
27253 				}
27254 				break;
27255 			case EXECUTE:
27256 			case EXEC:
27257 				enterOuterAlt(_localctx, 3);
27258 				{
27259 				setState(3836);
27260 				executeAsClause();
27261 				}
27262 				break;
27263 			case NATIVE_COMPILATION:
27264 				enterOuterAlt(_localctx, 4);
27265 				{
27266 				setState(3837);
27267 				match(NATIVE_COMPILATION);
27268 				}
27269 				break;
27270 			case SCHEMABINDING:
27271 				enterOuterAlt(_localctx, 5);
27272 				{
27273 				setState(3838);
27274 				match(SCHEMABINDING);
27275 				}
27276 				break;
27277 			default:
27278 				throw new NoViableAltException(this);
27279 			}
27280 		}
27281 		catch (RecognitionException re) {
27282 			_localctx.exception = re;
27283 			_errHandler.reportError(this, re);
27284 			_errHandler.recover(this, re);
27285 		}
27286 		finally {
27287 			exitRule();
27288 		}
27289 		return _localctx;
27290 	}
27291 
27292 	public static class ProcAsClauseContext extends ParserRuleContext {
27293 		public CompoundStatementContext compoundStatement() {
27294 			return getRuleContext(CompoundStatementContext.class,0);
27295 		}
27296 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
27297 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
27298 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
27299 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
27300 		public NameContext name() {
27301 			return getRuleContext(NameContext.class,0);
27302 		}
27303 		public List<OwnerContext> owner() {
27304 			return getRuleContexts(OwnerContext.class);
27305 		}
27306 		public OwnerContext owner(int i) {
27307 			return getRuleContext(OwnerContext.class,i);
27308 		}
27309 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
27310 		public TerminalNode DOT_(int i) {
27311 			return getToken(SQLServerStatementParser.DOT_, i);
27312 		}
27313 		public TerminalNode ATOMIC() { return getToken(SQLServerStatementParser.ATOMIC, 0); }
27314 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27315 		public List<ProcSetOptionContext> procSetOption() {
27316 			return getRuleContexts(ProcSetOptionContext.class);
27317 		}
27318 		public ProcSetOptionContext procSetOption(int i) {
27319 			return getRuleContext(ProcSetOptionContext.class,i);
27320 		}
27321 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27322 		public TerminalNode COMMA_(int i) {
27323 			return getToken(SQLServerStatementParser.COMMA_, i);
27324 		}
27325 		public ProcAsClauseContext(ParserRuleContext parent, int invokingState) {
27326 			super(parent, invokingState);
27327 		}
27328 		@Override public int getRuleIndex() { return RULE_procAsClause; }
27329 		@Override
27330 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27331 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcAsClause(this);
27332 			else return visitor.visitChildren(this);
27333 		}
27334 	}
27335 
27336 	public final ProcAsClauseContext procAsClause() throws RecognitionException {
27337 		ProcAsClauseContext _localctx = new ProcAsClauseContext(_ctx, getState());
27338 		enterRule(_localctx, 560, RULE_procAsClause);
27339 		int _la;
27340 		try {
27341 			setState(3876);
27342 			_errHandler.sync(this);
27343 			switch ( getInterpreter().adaptivePredict(_input,406,_ctx) ) {
27344 			case 1:
27345 				enterOuterAlt(_localctx, 1);
27346 				{
27347 				setState(3842);
27348 				_errHandler.sync(this);
27349 				_la = _input.LA(1);
27350 				if (_la==BEGIN) {
27351 					{
27352 					setState(3841);
27353 					match(BEGIN);
27354 					}
27355 				}
27356 
27357 				setState(3844);
27358 				compoundStatement();
27359 				setState(3846);
27360 				_errHandler.sync(this);
27361 				_la = _input.LA(1);
27362 				if (_la==END) {
27363 					{
27364 					setState(3845);
27365 					match(END);
27366 					}
27367 				}
27368 
27369 				}
27370 				break;
27371 			case 2:
27372 				enterOuterAlt(_localctx, 2);
27373 				{
27374 				setState(3848);
27375 				match(EXTERNAL);
27376 				setState(3849);
27377 				match(NAME);
27378 				setState(3853);
27379 				_errHandler.sync(this);
27380 				switch ( getInterpreter().adaptivePredict(_input,402,_ctx) ) {
27381 				case 1:
27382 					{
27383 					setState(3850);
27384 					owner();
27385 					setState(3851);
27386 					match(DOT_);
27387 					}
27388 					break;
27389 				}
27390 				setState(3858);
27391 				_errHandler.sync(this);
27392 				switch ( getInterpreter().adaptivePredict(_input,403,_ctx) ) {
27393 				case 1:
27394 					{
27395 					setState(3855);
27396 					owner();
27397 					setState(3856);
27398 					match(DOT_);
27399 					}
27400 					break;
27401 				}
27402 				setState(3860);
27403 				name();
27404 				}
27405 				break;
27406 			case 3:
27407 				enterOuterAlt(_localctx, 3);
27408 				{
27409 				setState(3861);
27410 				match(BEGIN);
27411 				setState(3862);
27412 				match(ATOMIC);
27413 				setState(3863);
27414 				match(WITH);
27415 				setState(3864);
27416 				procSetOption();
27417 				setState(3869);
27418 				_errHandler.sync(this);
27419 				_la = _input.LA(1);
27420 				while (_la==COMMA_) {
27421 					{
27422 					{
27423 					setState(3865);
27424 					match(COMMA_);
27425 					setState(3866);
27426 					procSetOption();
27427 					}
27428 					}
27429 					setState(3871);
27430 					_errHandler.sync(this);
27431 					_la = _input.LA(1);
27432 				}
27433 				setState(3872);
27434 				compoundStatement();
27435 				setState(3874);
27436 				_errHandler.sync(this);
27437 				_la = _input.LA(1);
27438 				if (_la==END) {
27439 					{
27440 					setState(3873);
27441 					match(END);
27442 					}
27443 				}
27444 
27445 				}
27446 				break;
27447 			}
27448 		}
27449 		catch (RecognitionException re) {
27450 			_localctx.exception = re;
27451 			_errHandler.reportError(this, re);
27452 			_errHandler.recover(this, re);
27453 		}
27454 		finally {
27455 			exitRule();
27456 		}
27457 		return _localctx;
27458 	}
27459 
27460 	public static class ProcSetOptionContext extends ParserRuleContext {
27461 		public TerminalNode LANGUAGE() { return getToken(SQLServerStatementParser.LANGUAGE, 0); }
27462 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
27463 		public StringLiteralsContext stringLiterals() {
27464 			return getRuleContext(StringLiteralsContext.class,0);
27465 		}
27466 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
27467 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
27468 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
27469 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
27470 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
27471 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
27472 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
27473 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
27474 		public NumberLiteralsContext numberLiterals() {
27475 			return getRuleContext(NumberLiteralsContext.class,0);
27476 		}
27477 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
27478 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
27479 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
27480 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
27481 		public ProcSetOptionContext(ParserRuleContext parent, int invokingState) {
27482 			super(parent, invokingState);
27483 		}
27484 		@Override public int getRuleIndex() { return RULE_procSetOption; }
27485 		@Override
27486 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27487 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcSetOption(this);
27488 			else return visitor.visitChildren(this);
27489 		}
27490 	}
27491 
27492 	public final ProcSetOptionContext procSetOption() throws RecognitionException {
27493 		ProcSetOptionContext _localctx = new ProcSetOptionContext(_ctx, getState());
27494 		enterRule(_localctx, 562, RULE_procSetOption);
27495 		int _la;
27496 		try {
27497 			setState(3900);
27498 			_errHandler.sync(this);
27499 			switch (_input.LA(1)) {
27500 			case LANGUAGE:
27501 				enterOuterAlt(_localctx, 1);
27502 				{
27503 				setState(3878);
27504 				match(LANGUAGE);
27505 				setState(3879);
27506 				match(EQ_);
27507 				setState(3880);
27508 				stringLiterals();
27509 				}
27510 				break;
27511 			case TRANSACTION:
27512 				enterOuterAlt(_localctx, 2);
27513 				{
27514 				setState(3881);
27515 				match(TRANSACTION);
27516 				setState(3882);
27517 				match(ISOLATION);
27518 				setState(3883);
27519 				match(LEVEL);
27520 				setState(3884);
27521 				match(EQ_);
27522 				setState(3889);
27523 				_errHandler.sync(this);
27524 				switch (_input.LA(1)) {
27525 				case SNAPSHOT:
27526 					{
27527 					setState(3885);
27528 					match(SNAPSHOT);
27529 					}
27530 					break;
27531 				case REPEATABLE:
27532 					{
27533 					setState(3886);
27534 					match(REPEATABLE);
27535 					setState(3887);
27536 					match(READ);
27537 					}
27538 					break;
27539 				case SERIALIZABLE:
27540 					{
27541 					setState(3888);
27542 					match(SERIALIZABLE);
27543 					}
27544 					break;
27545 				default:
27546 					throw new NoViableAltException(this);
27547 				}
27548 				}
27549 				break;
27550 			case DATEFIRST:
27551 				enterOuterAlt(_localctx, 3);
27552 				{
27553 				setState(3891);
27554 				match(DATEFIRST);
27555 				setState(3892);
27556 				match(EQ_);
27557 				setState(3893);
27558 				numberLiterals();
27559 				}
27560 				break;
27561 			case DATEFORMAT:
27562 				enterOuterAlt(_localctx, 4);
27563 				{
27564 				setState(3894);
27565 				match(DATEFORMAT);
27566 				setState(3895);
27567 				match(EQ_);
27568 				setState(3896);
27569 				stringLiterals();
27570 				}
27571 				break;
27572 			case DELAYED_DURABILITY:
27573 				enterOuterAlt(_localctx, 5);
27574 				{
27575 				setState(3897);
27576 				match(DELAYED_DURABILITY);
27577 				setState(3898);
27578 				match(EQ_);
27579 				setState(3899);
27580 				_la = _input.LA(1);
27581 				if ( !(_la==ON || _la==OFF) ) {
27582 				_errHandler.recoverInline(this);
27583 				}
27584 				else {
27585 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27586 					_errHandler.reportMatch(this);
27587 					consume();
27588 				}
27589 				}
27590 				break;
27591 			default:
27592 				throw new NoViableAltException(this);
27593 			}
27594 		}
27595 		catch (RecognitionException re) {
27596 			_localctx.exception = re;
27597 			_errHandler.reportError(this, re);
27598 			_errHandler.recover(this, re);
27599 		}
27600 		finally {
27601 			exitRule();
27602 		}
27603 		return _localctx;
27604 	}
27605 
27606 	public static class CreateOrAlterViewClauseContext extends ParserRuleContext {
27607 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27608 		public SelectContext select() {
27609 			return getRuleContext(SelectContext.class,0);
27610 		}
27611 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
27612 		public TerminalNode WITH(int i) {
27613 			return getToken(SQLServerStatementParser.WITH, i);
27614 		}
27615 		public List<ViewAttributeContext> viewAttribute() {
27616 			return getRuleContexts(ViewAttributeContext.class);
27617 		}
27618 		public ViewAttributeContext viewAttribute(int i) {
27619 			return getRuleContext(ViewAttributeContext.class,i);
27620 		}
27621 		public WithCommonTableExprContext withCommonTableExpr() {
27622 			return getRuleContext(WithCommonTableExprContext.class,0);
27623 		}
27624 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
27625 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
27626 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27627 		public TerminalNode COMMA_(int i) {
27628 			return getToken(SQLServerStatementParser.COMMA_, i);
27629 		}
27630 		public CreateOrAlterViewClauseContext(ParserRuleContext parent, int invokingState) {
27631 			super(parent, invokingState);
27632 		}
27633 		@Override public int getRuleIndex() { return RULE_createOrAlterViewClause; }
27634 		@Override
27635 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27636 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterViewClause(this);
27637 			else return visitor.visitChildren(this);
27638 		}
27639 	}
27640 
27641 	public final CreateOrAlterViewClauseContext createOrAlterViewClause() throws RecognitionException {
27642 		CreateOrAlterViewClauseContext _localctx = new CreateOrAlterViewClauseContext(_ctx, getState());
27643 		enterRule(_localctx, 564, RULE_createOrAlterViewClause);
27644 		int _la;
27645 		try {
27646 			enterOuterAlt(_localctx, 1);
27647 			{
27648 			setState(3911);
27649 			_errHandler.sync(this);
27650 			_la = _input.LA(1);
27651 			if (_la==WITH) {
27652 				{
27653 				setState(3902);
27654 				match(WITH);
27655 				setState(3903);
27656 				viewAttribute();
27657 				setState(3908);
27658 				_errHandler.sync(this);
27659 				_la = _input.LA(1);
27660 				while (_la==COMMA_) {
27661 					{
27662 					{
27663 					setState(3904);
27664 					match(COMMA_);
27665 					setState(3905);
27666 					viewAttribute();
27667 					}
27668 					}
27669 					setState(3910);
27670 					_errHandler.sync(this);
27671 					_la = _input.LA(1);
27672 				}
27673 				}
27674 			}
27675 
27676 			setState(3913);
27677 			match(AS);
27678 			setState(3915);
27679 			_errHandler.sync(this);
27680 			switch ( getInterpreter().adaptivePredict(_input,411,_ctx) ) {
27681 			case 1:
27682 				{
27683 				setState(3914);
27684 				withCommonTableExpr();
27685 				}
27686 				break;
27687 			}
27688 			setState(3917);
27689 			select();
27690 			setState(3921);
27691 			_errHandler.sync(this);
27692 			_la = _input.LA(1);
27693 			if (_la==WITH) {
27694 				{
27695 				setState(3918);
27696 				match(WITH);
27697 				setState(3919);
27698 				match(CHECK);
27699 				setState(3920);
27700 				match(OPTION);
27701 				}
27702 			}
27703 
27704 			}
27705 		}
27706 		catch (RecognitionException re) {
27707 			_localctx.exception = re;
27708 			_errHandler.reportError(this, re);
27709 			_errHandler.recover(this, re);
27710 		}
27711 		finally {
27712 			exitRule();
27713 		}
27714 		return _localctx;
27715 	}
27716 
27717 	public static class ViewAttributeContext extends ParserRuleContext {
27718 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27719 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27720 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
27721 		public ViewAttributeContext(ParserRuleContext parent, int invokingState) {
27722 			super(parent, invokingState);
27723 		}
27724 		@Override public int getRuleIndex() { return RULE_viewAttribute; }
27725 		@Override
27726 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27727 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewAttribute(this);
27728 			else return visitor.visitChildren(this);
27729 		}
27730 	}
27731 
27732 	public final ViewAttributeContext viewAttribute() throws RecognitionException {
27733 		ViewAttributeContext _localctx = new ViewAttributeContext(_ctx, getState());
27734 		enterRule(_localctx, 566, RULE_viewAttribute);
27735 		int _la;
27736 		try {
27737 			enterOuterAlt(_localctx, 1);
27738 			{
27739 			setState(3923);
27740 			_la = _input.LA(1);
27741 			if ( !(_la==ENCRYPTION || _la==SCHEMABINDING || _la==VIEW_METADATA) ) {
27742 			_errHandler.recoverInline(this);
27743 			}
27744 			else {
27745 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27746 				_errHandler.reportMatch(this);
27747 				consume();
27748 			}
27749 			}
27750 		}
27751 		catch (RecognitionException re) {
27752 			_localctx.exception = re;
27753 			_errHandler.reportError(this, re);
27754 			_errHandler.recover(this, re);
27755 		}
27756 		finally {
27757 			exitRule();
27758 		}
27759 		return _localctx;
27760 	}
27761 
27762 	public static class WithCommonTableExprContext extends ParserRuleContext {
27763 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27764 		public List<CommonTableExprContext> commonTableExpr() {
27765 			return getRuleContexts(CommonTableExprContext.class);
27766 		}
27767 		public CommonTableExprContext commonTableExpr(int i) {
27768 			return getRuleContext(CommonTableExprContext.class,i);
27769 		}
27770 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27771 		public TerminalNode COMMA_(int i) {
27772 			return getToken(SQLServerStatementParser.COMMA_, i);
27773 		}
27774 		public WithCommonTableExprContext(ParserRuleContext parent, int invokingState) {
27775 			super(parent, invokingState);
27776 		}
27777 		@Override public int getRuleIndex() { return RULE_withCommonTableExpr; }
27778 		@Override
27779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCommonTableExpr(this);
27781 			else return visitor.visitChildren(this);
27782 		}
27783 	}
27784 
27785 	public final WithCommonTableExprContext withCommonTableExpr() throws RecognitionException {
27786 		WithCommonTableExprContext _localctx = new WithCommonTableExprContext(_ctx, getState());
27787 		enterRule(_localctx, 568, RULE_withCommonTableExpr);
27788 		int _la;
27789 		try {
27790 			enterOuterAlt(_localctx, 1);
27791 			{
27792 			setState(3925);
27793 			match(WITH);
27794 			setState(3926);
27795 			commonTableExpr();
27796 			setState(3931);
27797 			_errHandler.sync(this);
27798 			_la = _input.LA(1);
27799 			while (_la==COMMA_) {
27800 				{
27801 				{
27802 				setState(3927);
27803 				match(COMMA_);
27804 				setState(3928);
27805 				commonTableExpr();
27806 				}
27807 				}
27808 				setState(3933);
27809 				_errHandler.sync(this);
27810 				_la = _input.LA(1);
27811 			}
27812 			}
27813 		}
27814 		catch (RecognitionException re) {
27815 			_localctx.exception = re;
27816 			_errHandler.reportError(this, re);
27817 			_errHandler.recover(this, re);
27818 		}
27819 		finally {
27820 			exitRule();
27821 		}
27822 		return _localctx;
27823 	}
27824 
27825 	public static class CommonTableExprContext extends ParserRuleContext {
27826 		public NameContext name() {
27827 			return getRuleContext(NameContext.class,0);
27828 		}
27829 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27830 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
27831 		public TerminalNode LP_(int i) {
27832 			return getToken(SQLServerStatementParser.LP_, i);
27833 		}
27834 		public SelectContext select() {
27835 			return getRuleContext(SelectContext.class,0);
27836 		}
27837 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
27838 		public TerminalNode RP_(int i) {
27839 			return getToken(SQLServerStatementParser.RP_, i);
27840 		}
27841 		public List<ColumnNameContext> columnName() {
27842 			return getRuleContexts(ColumnNameContext.class);
27843 		}
27844 		public ColumnNameContext columnName(int i) {
27845 			return getRuleContext(ColumnNameContext.class,i);
27846 		}
27847 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27848 		public TerminalNode COMMA_(int i) {
27849 			return getToken(SQLServerStatementParser.COMMA_, i);
27850 		}
27851 		public CommonTableExprContext(ParserRuleContext parent, int invokingState) {
27852 			super(parent, invokingState);
27853 		}
27854 		@Override public int getRuleIndex() { return RULE_commonTableExpr; }
27855 		@Override
27856 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27857 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonTableExpr(this);
27858 			else return visitor.visitChildren(this);
27859 		}
27860 	}
27861 
27862 	public final CommonTableExprContext commonTableExpr() throws RecognitionException {
27863 		CommonTableExprContext _localctx = new CommonTableExprContext(_ctx, getState());
27864 		enterRule(_localctx, 570, RULE_commonTableExpr);
27865 		int _la;
27866 		try {
27867 			enterOuterAlt(_localctx, 1);
27868 			{
27869 			setState(3934);
27870 			name();
27871 			setState(3946);
27872 			_errHandler.sync(this);
27873 			_la = _input.LA(1);
27874 			if (_la==LP_) {
27875 				{
27876 				setState(3935);
27877 				match(LP_);
27878 				setState(3936);
27879 				columnName();
27880 				setState(3941);
27881 				_errHandler.sync(this);
27882 				_la = _input.LA(1);
27883 				while (_la==COMMA_) {
27884 					{
27885 					{
27886 					setState(3937);
27887 					match(COMMA_);
27888 					setState(3938);
27889 					columnName();
27890 					}
27891 					}
27892 					setState(3943);
27893 					_errHandler.sync(this);
27894 					_la = _input.LA(1);
27895 				}
27896 				setState(3944);
27897 				match(RP_);
27898 				}
27899 			}
27900 
27901 			setState(3948);
27902 			match(AS);
27903 			setState(3949);
27904 			match(LP_);
27905 			setState(3950);
27906 			select();
27907 			setState(3951);
27908 			match(RP_);
27909 			}
27910 		}
27911 		catch (RecognitionException re) {
27912 			_localctx.exception = re;
27913 			_errHandler.reportError(this, re);
27914 			_errHandler.recover(this, re);
27915 		}
27916 		finally {
27917 			exitRule();
27918 		}
27919 		return _localctx;
27920 	}
27921 
27922 	public static class CreateTriggerClauseContext extends ParserRuleContext {
27923 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27924 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
27925 		public TerminalNode FOR(int i) {
27926 			return getToken(SQLServerStatementParser.FOR, i);
27927 		}
27928 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
27929 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
27930 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
27931 		public CompoundStatementContext compoundStatement() {
27932 			return getRuleContext(CompoundStatementContext.class,0);
27933 		}
27934 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
27935 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
27936 		public MethodSpecifierContext methodSpecifier() {
27937 			return getRuleContext(MethodSpecifierContext.class,0);
27938 		}
27939 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
27940 		public TerminalNode WITH(int i) {
27941 			return getToken(SQLServerStatementParser.WITH, i);
27942 		}
27943 		public List<DmlTriggerOptionContext> dmlTriggerOption() {
27944 			return getRuleContexts(DmlTriggerOptionContext.class);
27945 		}
27946 		public DmlTriggerOptionContext dmlTriggerOption(int i) {
27947 			return getRuleContext(DmlTriggerOptionContext.class,i);
27948 		}
27949 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27950 		public TerminalNode COMMA_(int i) {
27951 			return getToken(SQLServerStatementParser.COMMA_, i);
27952 		}
27953 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
27954 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
27955 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
27956 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
27957 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
27958 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
27959 		public CreateTriggerClauseContext(ParserRuleContext parent, int invokingState) {
27960 			super(parent, invokingState);
27961 		}
27962 		@Override public int getRuleIndex() { return RULE_createTriggerClause; }
27963 		@Override
27964 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27965 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTriggerClause(this);
27966 			else return visitor.visitChildren(this);
27967 		}
27968 	}
27969 
27970 	public final CreateTriggerClauseContext createTriggerClause() throws RecognitionException {
27971 		CreateTriggerClauseContext _localctx = new CreateTriggerClauseContext(_ctx, getState());
27972 		enterRule(_localctx, 572, RULE_createTriggerClause);
27973 		int _la;
27974 		try {
27975 			enterOuterAlt(_localctx, 1);
27976 			{
27977 			setState(3958);
27978 			_errHandler.sync(this);
27979 			_la = _input.LA(1);
27980 			if (_la==WITH) {
27981 				{
27982 				setState(3953);
27983 				match(WITH);
27984 				setState(3954);
27985 				dmlTriggerOption();
27986 				setState(3955);
27987 				match(COMMA_);
27988 				setState(3956);
27989 				dmlTriggerOption();
27990 				}
27991 			}
27992 
27993 			setState(3964);
27994 			_errHandler.sync(this);
27995 			switch (_input.LA(1)) {
27996 			case FOR:
27997 				{
27998 				setState(3960);
27999 				match(FOR);
28000 				}
28001 				break;
28002 			case AFTER:
28003 				{
28004 				setState(3961);
28005 				match(AFTER);
28006 				}
28007 				break;
28008 			case INSTEAD:
28009 				{
28010 				setState(3962);
28011 				match(INSTEAD);
28012 				setState(3963);
28013 				match(OF);
28014 				}
28015 				break;
28016 			default:
28017 				throw new NoViableAltException(this);
28018 			}
28019 			setState(3967);
28020 			_errHandler.sync(this);
28021 			_la = _input.LA(1);
28022 			if (_la==INSERT) {
28023 				{
28024 				setState(3966);
28025 				match(INSERT);
28026 				}
28027 			}
28028 
28029 			setState(3970);
28030 			_errHandler.sync(this);
28031 			switch ( getInterpreter().adaptivePredict(_input,419,_ctx) ) {
28032 			case 1:
28033 				{
28034 				setState(3969);
28035 				match(COMMA_);
28036 				}
28037 				break;
28038 			}
28039 			setState(3973);
28040 			_errHandler.sync(this);
28041 			_la = _input.LA(1);
28042 			if (_la==UPDATE) {
28043 				{
28044 				setState(3972);
28045 				match(UPDATE);
28046 				}
28047 			}
28048 
28049 			setState(3976);
28050 			_errHandler.sync(this);
28051 			switch ( getInterpreter().adaptivePredict(_input,421,_ctx) ) {
28052 			case 1:
28053 				{
28054 				setState(3975);
28055 				match(COMMA_);
28056 				}
28057 				break;
28058 			}
28059 			setState(3979);
28060 			_errHandler.sync(this);
28061 			_la = _input.LA(1);
28062 			if (_la==DELETE) {
28063 				{
28064 				setState(3978);
28065 				match(DELETE);
28066 				}
28067 			}
28068 
28069 			setState(3982);
28070 			_errHandler.sync(this);
28071 			_la = _input.LA(1);
28072 			if (_la==COMMA_) {
28073 				{
28074 				setState(3981);
28075 				match(COMMA_);
28076 				}
28077 			}
28078 
28079 			setState(3986);
28080 			_errHandler.sync(this);
28081 			_la = _input.LA(1);
28082 			if (_la==WITH) {
28083 				{
28084 				setState(3984);
28085 				match(WITH);
28086 				setState(3985);
28087 				match(APPEND);
28088 				}
28089 			}
28090 
28091 			setState(3991);
28092 			_errHandler.sync(this);
28093 			_la = _input.LA(1);
28094 			if (_la==NOT) {
28095 				{
28096 				setState(3988);
28097 				match(NOT);
28098 				setState(3989);
28099 				match(FOR);
28100 				setState(3990);
28101 				match(REPLICATION);
28102 				}
28103 			}
28104 
28105 			setState(3993);
28106 			match(AS);
28107 			setState(3998);
28108 			_errHandler.sync(this);
28109 			switch (_input.LA(1)) {
28110 			case EOF:
28111 			case SEMI_:
28112 			case SELECT:
28113 			case INSERT:
28114 			case UPDATE:
28115 			case DELETE:
28116 			case CREATE:
28117 			case ALTER:
28118 			case DROP:
28119 			case TRUNCATE:
28120 			case SET:
28121 			case WITH:
28122 			case DECLARE:
28123 				{
28124 				setState(3994);
28125 				compoundStatement();
28126 				}
28127 				break;
28128 			case EXTERNAL:
28129 				{
28130 				setState(3995);
28131 				match(EXTERNAL);
28132 				setState(3996);
28133 				match(NAME);
28134 				setState(3997);
28135 				methodSpecifier();
28136 				}
28137 				break;
28138 			default:
28139 				throw new NoViableAltException(this);
28140 			}
28141 			}
28142 		}
28143 		catch (RecognitionException re) {
28144 			_localctx.exception = re;
28145 			_errHandler.reportError(this, re);
28146 			_errHandler.recover(this, re);
28147 		}
28148 		finally {
28149 			exitRule();
28150 		}
28151 		return _localctx;
28152 	}
28153 
28154 	public static class DmlTriggerOptionContext extends ParserRuleContext {
28155 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
28156 		public ExecuteAsClauseContext executeAsClause() {
28157 			return getRuleContext(ExecuteAsClauseContext.class,0);
28158 		}
28159 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
28160 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
28161 		public DmlTriggerOptionContext(ParserRuleContext parent, int invokingState) {
28162 			super(parent, invokingState);
28163 		}
28164 		@Override public int getRuleIndex() { return RULE_dmlTriggerOption; }
28165 		@Override
28166 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28167 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDmlTriggerOption(this);
28168 			else return visitor.visitChildren(this);
28169 		}
28170 	}
28171 
28172 	public final DmlTriggerOptionContext dmlTriggerOption() throws RecognitionException {
28173 		DmlTriggerOptionContext _localctx = new DmlTriggerOptionContext(_ctx, getState());
28174 		enterRule(_localctx, 574, RULE_dmlTriggerOption);
28175 		try {
28176 			setState(4005);
28177 			_errHandler.sync(this);
28178 			switch (_input.LA(1)) {
28179 			case ENCRYPTION:
28180 				enterOuterAlt(_localctx, 1);
28181 				{
28182 				setState(4000);
28183 				match(ENCRYPTION);
28184 				}
28185 				break;
28186 			case EXECUTE:
28187 			case EXEC:
28188 				enterOuterAlt(_localctx, 2);
28189 				{
28190 				setState(4001);
28191 				executeAsClause();
28192 				}
28193 				break;
28194 			case NATIVE_COMPILATION:
28195 				enterOuterAlt(_localctx, 3);
28196 				{
28197 				setState(4002);
28198 				match(NATIVE_COMPILATION);
28199 				}
28200 				break;
28201 			case SCHEMABINDING:
28202 				enterOuterAlt(_localctx, 4);
28203 				{
28204 				setState(4003);
28205 				match(SCHEMABINDING);
28206 				}
28207 				break;
28208 			case COMMA_:
28209 			case FOR:
28210 			case AFTER:
28211 			case INSTEAD:
28212 				enterOuterAlt(_localctx, 5);
28213 				{
28214 				}
28215 				break;
28216 			default:
28217 				throw new NoViableAltException(this);
28218 			}
28219 		}
28220 		catch (RecognitionException re) {
28221 			_localctx.exception = re;
28222 			_errHandler.reportError(this, re);
28223 			_errHandler.recover(this, re);
28224 		}
28225 		finally {
28226 			exitRule();
28227 		}
28228 		return _localctx;
28229 	}
28230 
28231 	public static class MethodSpecifierContext extends ParserRuleContext {
28232 		public List<NameContext> name() {
28233 			return getRuleContexts(NameContext.class);
28234 		}
28235 		public NameContext name(int i) {
28236 			return getRuleContext(NameContext.class,i);
28237 		}
28238 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
28239 		public TerminalNode DOT_(int i) {
28240 			return getToken(SQLServerStatementParser.DOT_, i);
28241 		}
28242 		public MethodSpecifierContext(ParserRuleContext parent, int invokingState) {
28243 			super(parent, invokingState);
28244 		}
28245 		@Override public int getRuleIndex() { return RULE_methodSpecifier; }
28246 		@Override
28247 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28248 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMethodSpecifier(this);
28249 			else return visitor.visitChildren(this);
28250 		}
28251 	}
28252 
28253 	public final MethodSpecifierContext methodSpecifier() throws RecognitionException {
28254 		MethodSpecifierContext _localctx = new MethodSpecifierContext(_ctx, getState());
28255 		enterRule(_localctx, 576, RULE_methodSpecifier);
28256 		try {
28257 			enterOuterAlt(_localctx, 1);
28258 			{
28259 			setState(4007);
28260 			name();
28261 			setState(4008);
28262 			match(DOT_);
28263 			setState(4009);
28264 			name();
28265 			setState(4010);
28266 			match(DOT_);
28267 			setState(4011);
28268 			name();
28269 			}
28270 		}
28271 		catch (RecognitionException re) {
28272 			_localctx.exception = re;
28273 			_errHandler.reportError(this, re);
28274 			_errHandler.recover(this, re);
28275 		}
28276 		finally {
28277 			exitRule();
28278 		}
28279 		return _localctx;
28280 	}
28281 
28282 	public static class TriggerTargetContext extends ParserRuleContext {
28283 		public TableNameContext tableName() {
28284 			return getRuleContext(TableNameContext.class,0);
28285 		}
28286 		public ViewNameContext viewName() {
28287 			return getRuleContext(ViewNameContext.class,0);
28288 		}
28289 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
28290 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
28291 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
28292 		public TriggerTargetContext(ParserRuleContext parent, int invokingState) {
28293 			super(parent, invokingState);
28294 		}
28295 		@Override public int getRuleIndex() { return RULE_triggerTarget; }
28296 		@Override
28297 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28298 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerTarget(this);
28299 			else return visitor.visitChildren(this);
28300 		}
28301 	}
28302 
28303 	public final TriggerTargetContext triggerTarget() throws RecognitionException {
28304 		TriggerTargetContext _localctx = new TriggerTargetContext(_ctx, getState());
28305 		enterRule(_localctx, 578, RULE_triggerTarget);
28306 		try {
28307 			setState(4018);
28308 			_errHandler.sync(this);
28309 			switch ( getInterpreter().adaptivePredict(_input,428,_ctx) ) {
28310 			case 1:
28311 				enterOuterAlt(_localctx, 1);
28312 				{
28313 				setState(4013);
28314 				tableName();
28315 				}
28316 				break;
28317 			case 2:
28318 				enterOuterAlt(_localctx, 2);
28319 				{
28320 				setState(4014);
28321 				viewName();
28322 				}
28323 				break;
28324 			case 3:
28325 				enterOuterAlt(_localctx, 3);
28326 				{
28327 				setState(4015);
28328 				match(ALL);
28329 				setState(4016);
28330 				match(SERVER);
28331 				}
28332 				break;
28333 			case 4:
28334 				enterOuterAlt(_localctx, 4);
28335 				{
28336 				setState(4017);
28337 				match(DATABASE);
28338 				}
28339 				break;
28340 			}
28341 		}
28342 		catch (RecognitionException re) {
28343 			_localctx.exception = re;
28344 			_errHandler.reportError(this, re);
28345 			_errHandler.recover(this, re);
28346 		}
28347 		finally {
28348 			exitRule();
28349 		}
28350 		return _localctx;
28351 	}
28352 
28353 	public static class CreateOrAlterSequenceClauseContext extends ParserRuleContext {
28354 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28355 		public DataTypeContext dataType() {
28356 			return getRuleContext(DataTypeContext.class,0);
28357 		}
28358 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28359 		public ExprContext expr() {
28360 			return getRuleContext(ExprContext.class,0);
28361 		}
28362 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
28363 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
28364 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
28365 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
28366 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
28367 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
28368 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
28369 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
28370 		public TerminalNode CYCLE() { return getToken(SQLServerStatementParser.CYCLE, 0); }
28371 		public CreateOrAlterSequenceClauseContext(ParserRuleContext parent, int invokingState) {
28372 			super(parent, invokingState);
28373 		}
28374 		@Override public int getRuleIndex() { return RULE_createOrAlterSequenceClause; }
28375 		@Override
28376 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28377 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterSequenceClause(this);
28378 			else return visitor.visitChildren(this);
28379 		}
28380 	}
28381 
28382 	public final CreateOrAlterSequenceClauseContext createOrAlterSequenceClause() throws RecognitionException {
28383 		CreateOrAlterSequenceClauseContext _localctx = new CreateOrAlterSequenceClauseContext(_ctx, getState());
28384 		enterRule(_localctx, 580, RULE_createOrAlterSequenceClause);
28385 		int _la;
28386 		try {
28387 			setState(4048);
28388 			_errHandler.sync(this);
28389 			switch ( getInterpreter().adaptivePredict(_input,432,_ctx) ) {
28390 			case 1:
28391 				enterOuterAlt(_localctx, 1);
28392 				{
28393 				setState(4020);
28394 				match(AS);
28395 				setState(4021);
28396 				dataType();
28397 				}
28398 				break;
28399 			case 2:
28400 				enterOuterAlt(_localctx, 2);
28401 				{
28402 				setState(4022);
28403 				_la = _input.LA(1);
28404 				if ( !(_la==START || _la==RESTART) ) {
28405 				_errHandler.recoverInline(this);
28406 				}
28407 				else {
28408 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28409 					_errHandler.reportMatch(this);
28410 					consume();
28411 				}
28412 				setState(4023);
28413 				match(WITH);
28414 				setState(4024);
28415 				expr(0);
28416 				}
28417 				break;
28418 			case 3:
28419 				enterOuterAlt(_localctx, 3);
28420 				{
28421 				setState(4025);
28422 				match(INCREMENT);
28423 				setState(4026);
28424 				match(BY);
28425 				setState(4027);
28426 				expr(0);
28427 				}
28428 				break;
28429 			case 4:
28430 				enterOuterAlt(_localctx, 4);
28431 				{
28432 				setState(4028);
28433 				match(MINVALUE);
28434 				setState(4030);
28435 				_errHandler.sync(this);
28436 				switch ( getInterpreter().adaptivePredict(_input,429,_ctx) ) {
28437 				case 1:
28438 					{
28439 					setState(4029);
28440 					expr(0);
28441 					}
28442 					break;
28443 				}
28444 				}
28445 				break;
28446 			case 5:
28447 				enterOuterAlt(_localctx, 5);
28448 				{
28449 				setState(4032);
28450 				match(NO);
28451 				setState(4033);
28452 				match(MINVALUE);
28453 				}
28454 				break;
28455 			case 6:
28456 				enterOuterAlt(_localctx, 6);
28457 				{
28458 				setState(4034);
28459 				match(MAXVALUE);
28460 				setState(4036);
28461 				_errHandler.sync(this);
28462 				switch ( getInterpreter().adaptivePredict(_input,430,_ctx) ) {
28463 				case 1:
28464 					{
28465 					setState(4035);
28466 					expr(0);
28467 					}
28468 					break;
28469 				}
28470 				}
28471 				break;
28472 			case 7:
28473 				enterOuterAlt(_localctx, 7);
28474 				{
28475 				setState(4038);
28476 				match(NO);
28477 				setState(4039);
28478 				match(MAXVALUE);
28479 				}
28480 				break;
28481 			case 8:
28482 				enterOuterAlt(_localctx, 8);
28483 				{
28484 				setState(4040);
28485 				match(CACHE);
28486 				setState(4041);
28487 				expr(0);
28488 				}
28489 				break;
28490 			case 9:
28491 				enterOuterAlt(_localctx, 9);
28492 				{
28493 				setState(4042);
28494 				match(NO);
28495 				setState(4043);
28496 				match(CACHE);
28497 				}
28498 				break;
28499 			case 10:
28500 				enterOuterAlt(_localctx, 10);
28501 				{
28502 				setState(4045);
28503 				_errHandler.sync(this);
28504 				_la = _input.LA(1);
28505 				if (_la==NO) {
28506 					{
28507 					setState(4044);
28508 					match(NO);
28509 					}
28510 				}
28511 
28512 				setState(4047);
28513 				match(CYCLE);
28514 				}
28515 				break;
28516 			}
28517 		}
28518 		catch (RecognitionException re) {
28519 			_localctx.exception = re;
28520 			_errHandler.reportError(this, re);
28521 			_errHandler.recover(this, re);
28522 		}
28523 		finally {
28524 			exitRule();
28525 		}
28526 		return _localctx;
28527 	}
28528 
28529 	public static class CreateIndexClauseContext extends ParserRuleContext {
28530 		public TerminalNode INCLUDE() { return getToken(SQLServerStatementParser.INCLUDE, 0); }
28531 		public ColumnNamesWithSortContext columnNamesWithSort() {
28532 			return getRuleContext(ColumnNamesWithSortContext.class,0);
28533 		}
28534 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
28535 		public FilterPredicateContext filterPredicate() {
28536 			return getRuleContext(FilterPredicateContext.class,0);
28537 		}
28538 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28539 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
28540 		public TerminalNode LP_(int i) {
28541 			return getToken(SQLServerStatementParser.LP_, i);
28542 		}
28543 		public List<RelationalIndexOptionContext> relationalIndexOption() {
28544 			return getRuleContexts(RelationalIndexOptionContext.class);
28545 		}
28546 		public RelationalIndexOptionContext relationalIndexOption(int i) {
28547 			return getRuleContext(RelationalIndexOptionContext.class,i);
28548 		}
28549 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
28550 		public TerminalNode RP_(int i) {
28551 			return getToken(SQLServerStatementParser.RP_, i);
28552 		}
28553 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
28554 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
28555 		public SchemaNameContext schemaName() {
28556 			return getRuleContext(SchemaNameContext.class,0);
28557 		}
28558 		public ColumnNameContext columnName() {
28559 			return getRuleContext(ColumnNameContext.class,0);
28560 		}
28561 		public List<NameContext> name() {
28562 			return getRuleContexts(NameContext.class);
28563 		}
28564 		public NameContext name(int i) {
28565 			return getRuleContext(NameContext.class,i);
28566 		}
28567 		public StringLiteralsContext stringLiterals() {
28568 			return getRuleContext(StringLiteralsContext.class,0);
28569 		}
28570 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28571 		public TerminalNode COMMA_(int i) {
28572 			return getToken(SQLServerStatementParser.COMMA_, i);
28573 		}
28574 		public CreateIndexClauseContext(ParserRuleContext parent, int invokingState) {
28575 			super(parent, invokingState);
28576 		}
28577 		@Override public int getRuleIndex() { return RULE_createIndexClause; }
28578 		@Override
28579 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28580 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexClause(this);
28581 			else return visitor.visitChildren(this);
28582 		}
28583 	}
28584 
28585 	public final CreateIndexClauseContext createIndexClause() throws RecognitionException {
28586 		CreateIndexClauseContext _localctx = new CreateIndexClauseContext(_ctx, getState());
28587 		enterRule(_localctx, 582, RULE_createIndexClause);
28588 		int _la;
28589 		try {
28590 			enterOuterAlt(_localctx, 1);
28591 			{
28592 			setState(4052);
28593 			_errHandler.sync(this);
28594 			_la = _input.LA(1);
28595 			if (_la==INCLUDE) {
28596 				{
28597 				setState(4050);
28598 				match(INCLUDE);
28599 				setState(4051);
28600 				columnNamesWithSort();
28601 				}
28602 			}
28603 
28604 			setState(4056);
28605 			_errHandler.sync(this);
28606 			_la = _input.LA(1);
28607 			if (_la==WHERE) {
28608 				{
28609 				setState(4054);
28610 				match(WHERE);
28611 				setState(4055);
28612 				filterPredicate();
28613 				}
28614 			}
28615 
28616 			setState(4070);
28617 			_errHandler.sync(this);
28618 			_la = _input.LA(1);
28619 			if (_la==WITH) {
28620 				{
28621 				setState(4058);
28622 				match(WITH);
28623 				setState(4059);
28624 				match(LP_);
28625 				setState(4060);
28626 				relationalIndexOption();
28627 				setState(4065);
28628 				_errHandler.sync(this);
28629 				_la = _input.LA(1);
28630 				while (_la==COMMA_) {
28631 					{
28632 					{
28633 					setState(4061);
28634 					match(COMMA_);
28635 					setState(4062);
28636 					relationalIndexOption();
28637 					}
28638 					}
28639 					setState(4067);
28640 					_errHandler.sync(this);
28641 					_la = _input.LA(1);
28642 				}
28643 				setState(4068);
28644 				match(RP_);
28645 				}
28646 			}
28647 
28648 			setState(4081);
28649 			_errHandler.sync(this);
28650 			_la = _input.LA(1);
28651 			if (_la==ON) {
28652 				{
28653 				setState(4072);
28654 				match(ON);
28655 				setState(4079);
28656 				_errHandler.sync(this);
28657 				switch ( getInterpreter().adaptivePredict(_input,437,_ctx) ) {
28658 				case 1:
28659 					{
28660 					setState(4073);
28661 					schemaName();
28662 					setState(4074);
28663 					match(LP_);
28664 					setState(4075);
28665 					columnName();
28666 					setState(4076);
28667 					match(RP_);
28668 					}
28669 					break;
28670 				case 2:
28671 					{
28672 					setState(4078);
28673 					name();
28674 					}
28675 					break;
28676 				}
28677 				}
28678 			}
28679 
28680 			setState(4088);
28681 			_errHandler.sync(this);
28682 			_la = _input.LA(1);
28683 			if (_la==FILESTREAM_ON) {
28684 				{
28685 				setState(4083);
28686 				match(FILESTREAM_ON);
28687 				setState(4086);
28688 				_errHandler.sync(this);
28689 				switch (_input.LA(1)) {
28690 				case TRUNCATE:
28691 				case SCHEMA:
28692 				case COLUMNS:
28693 				case PRECISION:
28694 				case FUNCTION:
28695 				case TRIGGER:
28696 				case CAST:
28697 				case SUBSTRING:
28698 				case OFF:
28699 				case GROUP:
28700 				case LIMIT:
28701 				case OFFSET:
28702 				case SAVEPOINT:
28703 				case BOOLEAN:
28704 				case ARRAY:
28705 				case DATE:
28706 				case LOCALTIME:
28707 				case LOCALTIMESTAMP:
28708 				case QUARTER:
28709 				case WEEK:
28710 				case DAY:
28711 				case SECOND:
28712 				case MICROSECOND:
28713 				case MAX:
28714 				case MIN:
28715 				case SUM:
28716 				case COUNT:
28717 				case AVG:
28718 				case ENABLE:
28719 				case DISABLE:
28720 				case INSTANCE:
28721 				case DO:
28722 				case DEFINER:
28723 				case SQL:
28724 				case CASCADED:
28725 				case LOCAL:
28726 				case NEXT:
28727 				case NAME:
28728 				case INTEGER:
28729 				case TYPE:
28730 				case TEXT:
28731 				case VIEWS:
28732 				case READ_ONLY:
28733 				case DATABASE:
28734 				case RETURNS:
28735 				case DATEPART:
28736 				case PASSWORD:
28737 				case BINARY:
28738 				case HIDDEN_:
28739 				case MOD:
28740 				case PARTITION:
28741 				case PARTITIONS:
28742 				case TOP:
28743 				case ROW:
28744 				case ROWS:
28745 				case XOR:
28746 				case ALWAYS:
28747 				case ROLE:
28748 				case START:
28749 				case ALGORITHM:
28750 				case AUTO:
28751 				case BLOCKERS:
28752 				case CLUSTERED:
28753 				case NONCLUSTERED:
28754 				case COLUMNSTORE:
28755 				case CONTENT:
28756 				case YEARS:
28757 				case MONTHS:
28758 				case WEEKS:
28759 				case DAYS:
28760 				case MINUTES:
28761 				case DENY:
28762 				case DETERMINISTIC:
28763 				case DISTRIBUTION:
28764 				case DOCUMENT:
28765 				case DURABILITY:
28766 				case ENCRYPTED:
28767 				case FILESTREAM:
28768 				case FILETABLE:
28769 				case FILLFACTOR:
28770 				case FOLLOWING:
28771 				case HASH:
28772 				case HEAP:
28773 				case INBOUND:
28774 				case OUTBOUND:
28775 				case UNBOUNDED:
28776 				case INFINITE:
28777 				case LOGIN:
28778 				case MASKED:
28779 				case MAXDOP:
28780 				case MOVE:
28781 				case NOCHECK:
28782 				case OBJECT:
28783 				case ONLINE:
28784 				case OVER:
28785 				case PAGE:
28786 				case PAUSED:
28787 				case PERIOD:
28788 				case PERSISTED:
28789 				case PRECEDING:
28790 				case RANDOMIZED:
28791 				case RANGE:
28792 				case REBUILD:
28793 				case REPLICATE:
28794 				case REPLICATION:
28795 				case RESUMABLE:
28796 				case ROWGUIDCOL:
28797 				case SAVE:
28798 				case SELF:
28799 				case SPARSE:
28800 				case SWITCH:
28801 				case TRAN:
28802 				case TRANCOUNT:
28803 				case CONTROL:
28804 				case CONCAT:
28805 				case TAKE:
28806 				case OWNERSHIP:
28807 				case DEFINITION:
28808 				case APPLICATION:
28809 				case ASSEMBLY:
28810 				case SYMMETRIC:
28811 				case ASYMMETRIC:
28812 				case SERVER:
28813 				case RECEIVE:
28814 				case CHANGE:
28815 				case TRACE:
28816 				case TRACKING:
28817 				case RESOURCES:
28818 				case SETTINGS:
28819 				case STATE:
28820 				case AVAILABILITY:
28821 				case CREDENTIAL:
28822 				case ENDPOINT:
28823 				case EVENT:
28824 				case NOTIFICATION:
28825 				case LINKED:
28826 				case AUDIT:
28827 				case DDL:
28828 				case XML:
28829 				case IMPERSONATE:
28830 				case SECURABLES:
28831 				case AUTHENTICATE:
28832 				case EXTERNAL:
28833 				case ACCESS:
28834 				case ADMINISTER:
28835 				case BULK:
28836 				case OPERATIONS:
28837 				case UNSAFE:
28838 				case SHUTDOWN:
28839 				case SCOPED:
28840 				case CONFIGURATION:
28841 				case DATASPACE:
28842 				case SERVICE:
28843 				case CERTIFICATE:
28844 				case CONTRACT:
28845 				case ENCRYPTION:
28846 				case MASTER:
28847 				case DATA:
28848 				case SOURCE:
28849 				case FILE:
28850 				case FORMAT:
28851 				case LIBRARY:
28852 				case FULLTEXT:
28853 				case MASK:
28854 				case UNMASK:
28855 				case MESSAGE:
28856 				case REMOTE:
28857 				case BINDING:
28858 				case ROUTE:
28859 				case SECURITY:
28860 				case POLICY:
28861 				case AGGREGATE:
28862 				case QUEUE:
28863 				case RULE:
28864 				case SYNONYM:
28865 				case COLLECTION:
28866 				case SCRIPT:
28867 				case KILL:
28868 				case BACKUP:
28869 				case LOG:
28870 				case SHOWPLAN:
28871 				case SUBSCRIBE:
28872 				case QUERY:
28873 				case NOTIFICATIONS:
28874 				case CHECKPOINT:
28875 				case SEQUENCE:
28876 				case ABORT_AFTER_WAIT:
28877 				case ALLOW_PAGE_LOCKS:
28878 				case ALLOW_ROW_LOCKS:
28879 				case ALL_SPARSE_COLUMNS:
28880 				case BUCKET_COUNT:
28881 				case COLUMNSTORE_ARCHIVE:
28882 				case COLUMN_ENCRYPTION_KEY:
28883 				case COLUMN_SET:
28884 				case COMPRESSION_DELAY:
28885 				case DATABASE_DEAULT:
28886 				case DATA_COMPRESSION:
28887 				case DATA_CONSISTENCY_CHECK:
28888 				case ENCRYPTION_TYPE:
28889 				case SYSTEM_TIME:
28890 				case SYSTEM_VERSIONING:
28891 				case TEXTIMAGE_ON:
28892 				case WAIT_AT_LOW_PRIORITY:
28893 				case STATISTICS_INCREMENTAL:
28894 				case STATISTICS_NORECOMPUTE:
28895 				case ROUND_ROBIN:
28896 				case SCHEMA_AND_DATA:
28897 				case SCHEMA_ONLY:
28898 				case SORT_IN_TEMPDB:
28899 				case IGNORE_DUP_KEY:
28900 				case IMPLICIT_TRANSACTIONS:
28901 				case MAX_DURATION:
28902 				case MEMORY_OPTIMIZED:
28903 				case MIGRATION_STATE:
28904 				case PAD_INDEX:
28905 				case REMOTE_DATA_ARCHIVE:
28906 				case FILESTREAM_ON:
28907 				case FILETABLE_COLLATE_FILENAME:
28908 				case FILETABLE_DIRECTORY:
28909 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
28910 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
28911 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
28912 				case FILTER_PREDICATE:
28913 				case HISTORY_RETENTION_PERIOD:
28914 				case HISTORY_TABLE:
28915 				case LOCK_ESCALATION:
28916 				case DROP_EXISTING:
28917 				case ROW_NUMBER:
28918 				case FIRST:
28919 				case DATETIME2:
28920 				case OUTPUT:
28921 				case INSERTED:
28922 				case DELETED:
28923 				case FILENAME:
28924 				case MAXSIZE:
28925 				case FILEGROWTH:
28926 				case UNLIMITED:
28927 				case KB:
28928 				case MB:
28929 				case GB:
28930 				case TB:
28931 				case MEMORY_OPTIMIZED_DATA:
28932 				case FILEGROUP:
28933 				case NON_TRANSACTED_ACCESS:
28934 				case DB_CHAINING:
28935 				case TRUSTWORTHY:
28936 				case FORWARD_ONLY:
28937 				case KEYSET:
28938 				case FAST_FORWARD:
28939 				case SCROLL_LOCKS:
28940 				case OPTIMISTIC:
28941 				case TYPE_WARNING:
28942 				case SCHEMABINDING:
28943 				case CALLER:
28944 				case OWNER:
28945 				case SNAPSHOT:
28946 				case REPEATABLE:
28947 				case SERIALIZABLE:
28948 				case NATIVE_COMPILATION:
28949 				case VIEW_METADATA:
28950 				case INSTEAD:
28951 				case APPEND:
28952 				case INCREMENT:
28953 				case CACHE:
28954 				case MINVALUE:
28955 				case MAXVALUE:
28956 				case RESTART:
28957 				case LOB_COMPACTION:
28958 				case COMPRESS_ALL_ROW_GROUPS:
28959 				case REORGANIZE:
28960 				case RESUME:
28961 				case PAUSE:
28962 				case ABORT:
28963 				case ACCELERATED_DATABASE_RECOVERY:
28964 				case PERSISTENT_VERSION_STORE_FILEGROUP:
28965 				case IMMEDIATE:
28966 				case NO_WAIT:
28967 				case TARGET_RECOVERY_TIME:
28968 				case SECONDS:
28969 				case HONOR_BROKER_PRIORITY:
28970 				case ERROR_BROKER_CONVERSATIONS:
28971 				case NEW_BROKER:
28972 				case DISABLE_BROKER:
28973 				case ENABLE_BROKER:
28974 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
28975 				case READ_COMMITTED_SNAPSHOT:
28976 				case ALLOW_SNAPSHOT_ISOLATION:
28977 				case RECURSIVE_TRIGGERS:
28978 				case QUOTED_IDENTIFIER:
28979 				case NUMERIC_ROUNDABORT:
28980 				case CONCAT_NULL_YIELDS_NULL:
28981 				case COMPATIBILITY_LEVEL:
28982 				case ARITHABORT:
28983 				case ANSI_WARNINGS:
28984 				case ANSI_PADDING:
28985 				case ANSI_NULLS:
28986 				case ANSI_NULL_DEFAULT:
28987 				case PAGE_VERIFY:
28988 				case CHECKSUM:
28989 				case TORN_PAGE_DETECTION:
28990 				case BULK_LOGGED:
28991 				case RECOVERY:
28992 				case TOTAL_EXECUTION_CPU_TIME_MS:
28993 				case TOTAL_COMPILE_CPU_TIME_MS:
28994 				case STALE_CAPTURE_POLICY_THRESHOLD:
28995 				case EXECUTION_COUNT:
28996 				case QUERY_CAPTURE_POLICY:
28997 				case WAIT_STATS_CAPTURE_MODE:
28998 				case MAX_PLANS_PER_QUERY:
28999 				case QUERY_CAPTURE_MODE:
29000 				case SIZE_BASED_CLEANUP_MODE:
29001 				case INTERVAL_LENGTH_MINUTES:
29002 				case MAX_STORAGE_SIZE_MB:
29003 				case DATA_FLUSH_INTERVAL_SECONDS:
29004 				case CLEANUP_POLICY:
29005 				case CUSTOM:
29006 				case STALE_QUERY_THRESHOLD_DAYS:
29007 				case OPERATION_MODE:
29008 				case QUERY_STORE:
29009 				case CURSOR_DEFAULT:
29010 				case GLOBAL:
29011 				case CURSOR_CLOSE_ON_COMMIT:
29012 				case HOURS:
29013 				case CHANGE_RETENTION:
29014 				case AUTO_CLEANUP:
29015 				case CHANGE_TRACKING:
29016 				case AUTOMATIC_TUNING:
29017 				case FORCE_LAST_GOOD_PLAN:
29018 				case AUTO_UPDATE_STATISTICS_ASYNC:
29019 				case AUTO_UPDATE_STATISTICS:
29020 				case AUTO_SHRINK:
29021 				case AUTO_CREATE_STATISTICS:
29022 				case INCREMENTAL:
29023 				case AUTO_CLOSE:
29024 				case DATA_RETENTION:
29025 				case TEMPORAL_HISTORY_RETENTION:
29026 				case EDITION:
29027 				case MIXED_PAGE_ALLOCATION:
29028 				case DISABLED:
29029 				case ALLOWED:
29030 				case HADR:
29031 				case MULTI_USER:
29032 				case RESTRICTED_USER:
29033 				case SINGLE_USER:
29034 				case OFFLINE:
29035 				case EMERGENCY:
29036 				case SUSPEND:
29037 				case DATE_CORRELATION_OPTIMIZATION:
29038 				case ELASTIC_POOL:
29039 				case SERVICE_OBJECTIVE:
29040 				case DATABASE_NAME:
29041 				case ALLOW_CONNECTIONS:
29042 				case GEO:
29043 				case NAMED:
29044 				case DATEFIRST:
29045 				case BACKUP_STORAGE_REDUNDANCY:
29046 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
29047 				case SECONDARY:
29048 				case FAILOVER:
29049 				case DEFAULT_FULLTEXT_LANGUAGE:
29050 				case DEFAULT_LANGUAGE:
29051 				case INLINE:
29052 				case NESTED_TRIGGERS:
29053 				case TRANSFORM_NOISE_WORDS:
29054 				case TWO_DIGIT_YEAR_CUTOFF:
29055 				case PERSISTENT_LOG_BUFFER:
29056 				case DIRECTORY_NAME:
29057 				case DATEFORMAT:
29058 				case DELAYED_DURABILITY:
29059 				case AUTHORIZATION:
29060 				case TRANSFER:
29061 				case PROVIDER:
29062 				case SEARCH:
29063 				case MEMBER:
29064 				case IDENTIFIER_:
29065 				case DELIMITED_IDENTIFIER_:
29066 					{
29067 					setState(4084);
29068 					name();
29069 					}
29070 					break;
29071 				case STRING_:
29072 				case NCHAR_TEXT:
29073 					{
29074 					setState(4085);
29075 					stringLiterals();
29076 					}
29077 					break;
29078 				default:
29079 					throw new NoViableAltException(this);
29080 				}
29081 				}
29082 			}
29083 
29084 			}
29085 		}
29086 		catch (RecognitionException re) {
29087 			_localctx.exception = re;
29088 			_errHandler.reportError(this, re);
29089 			_errHandler.recover(this, re);
29090 		}
29091 		finally {
29092 			exitRule();
29093 		}
29094 		return _localctx;
29095 	}
29096 
29097 	public static class FilterPredicateContext extends ParserRuleContext {
29098 		public List<ConjunctContext> conjunct() {
29099 			return getRuleContexts(ConjunctContext.class);
29100 		}
29101 		public ConjunctContext conjunct(int i) {
29102 			return getRuleContext(ConjunctContext.class,i);
29103 		}
29104 		public List<TerminalNode> AND() { return getTokens(SQLServerStatementParser.AND); }
29105 		public TerminalNode AND(int i) {
29106 			return getToken(SQLServerStatementParser.AND, i);
29107 		}
29108 		public FilterPredicateContext(ParserRuleContext parent, int invokingState) {
29109 			super(parent, invokingState);
29110 		}
29111 		@Override public int getRuleIndex() { return RULE_filterPredicate; }
29112 		@Override
29113 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29114 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilterPredicate(this);
29115 			else return visitor.visitChildren(this);
29116 		}
29117 	}
29118 
29119 	public final FilterPredicateContext filterPredicate() throws RecognitionException {
29120 		FilterPredicateContext _localctx = new FilterPredicateContext(_ctx, getState());
29121 		enterRule(_localctx, 584, RULE_filterPredicate);
29122 		int _la;
29123 		try {
29124 			enterOuterAlt(_localctx, 1);
29125 			{
29126 			setState(4090);
29127 			conjunct();
29128 			setState(4095);
29129 			_errHandler.sync(this);
29130 			_la = _input.LA(1);
29131 			while (_la==AND) {
29132 				{
29133 				{
29134 				setState(4091);
29135 				match(AND);
29136 				setState(4092);
29137 				conjunct();
29138 				}
29139 				}
29140 				setState(4097);
29141 				_errHandler.sync(this);
29142 				_la = _input.LA(1);
29143 			}
29144 			}
29145 		}
29146 		catch (RecognitionException re) {
29147 			_localctx.exception = re;
29148 			_errHandler.reportError(this, re);
29149 			_errHandler.recover(this, re);
29150 		}
29151 		finally {
29152 			exitRule();
29153 		}
29154 		return _localctx;
29155 	}
29156 
29157 	public static class ConjunctContext extends ParserRuleContext {
29158 		public ColumnNameContext columnName() {
29159 			return getRuleContext(ColumnNameContext.class,0);
29160 		}
29161 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
29162 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
29163 		public List<ExprContext> expr() {
29164 			return getRuleContexts(ExprContext.class);
29165 		}
29166 		public ExprContext expr(int i) {
29167 			return getRuleContext(ExprContext.class,i);
29168 		}
29169 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
29170 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29171 		public TerminalNode COMMA_(int i) {
29172 			return getToken(SQLServerStatementParser.COMMA_, i);
29173 		}
29174 		public ComparisonOperatorContext comparisonOperator() {
29175 			return getRuleContext(ComparisonOperatorContext.class,0);
29176 		}
29177 		public ConjunctContext(ParserRuleContext parent, int invokingState) {
29178 			super(parent, invokingState);
29179 		}
29180 		@Override public int getRuleIndex() { return RULE_conjunct; }
29181 		@Override
29182 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29183 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConjunct(this);
29184 			else return visitor.visitChildren(this);
29185 		}
29186 	}
29187 
29188 	public final ConjunctContext conjunct() throws RecognitionException {
29189 		ConjunctContext _localctx = new ConjunctContext(_ctx, getState());
29190 		enterRule(_localctx, 586, RULE_conjunct);
29191 		int _la;
29192 		try {
29193 			setState(4115);
29194 			_errHandler.sync(this);
29195 			switch ( getInterpreter().adaptivePredict(_input,443,_ctx) ) {
29196 			case 1:
29197 				enterOuterAlt(_localctx, 1);
29198 				{
29199 				setState(4098);
29200 				columnName();
29201 				setState(4099);
29202 				match(IN);
29203 				setState(4100);
29204 				match(LP_);
29205 				setState(4101);
29206 				expr(0);
29207 				setState(4106);
29208 				_errHandler.sync(this);
29209 				_la = _input.LA(1);
29210 				while (_la==COMMA_) {
29211 					{
29212 					{
29213 					setState(4102);
29214 					match(COMMA_);
29215 					setState(4103);
29216 					expr(0);
29217 					}
29218 					}
29219 					setState(4108);
29220 					_errHandler.sync(this);
29221 					_la = _input.LA(1);
29222 				}
29223 				setState(4109);
29224 				match(RP_);
29225 				}
29226 				break;
29227 			case 2:
29228 				enterOuterAlt(_localctx, 2);
29229 				{
29230 				setState(4111);
29231 				columnName();
29232 				setState(4112);
29233 				comparisonOperator();
29234 				setState(4113);
29235 				expr(0);
29236 				}
29237 				break;
29238 			}
29239 		}
29240 		catch (RecognitionException re) {
29241 			_localctx.exception = re;
29242 			_errHandler.reportError(this, re);
29243 			_errHandler.recover(this, re);
29244 		}
29245 		finally {
29246 			exitRule();
29247 		}
29248 		return _localctx;
29249 	}
29250 
29251 	public static class AlterIndexClauseContext extends ParserRuleContext {
29252 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
29253 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
29254 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29255 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29256 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
29257 		public List<RelationalIndexOptionContext> relationalIndexOption() {
29258 			return getRuleContexts(RelationalIndexOptionContext.class);
29259 		}
29260 		public RelationalIndexOptionContext relationalIndexOption(int i) {
29261 			return getRuleContext(RelationalIndexOptionContext.class,i);
29262 		}
29263 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
29264 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
29265 		public ExprContext expr() {
29266 			return getRuleContext(ExprContext.class,0);
29267 		}
29268 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29269 		public TerminalNode COMMA_(int i) {
29270 			return getToken(SQLServerStatementParser.COMMA_, i);
29271 		}
29272 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
29273 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
29274 		public ReorganizeOptionContext reorganizeOption() {
29275 			return getRuleContext(ReorganizeOptionContext.class,0);
29276 		}
29277 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
29278 		public List<SetIndexOptionContext> setIndexOption() {
29279 			return getRuleContexts(SetIndexOptionContext.class);
29280 		}
29281 		public SetIndexOptionContext setIndexOption(int i) {
29282 			return getRuleContext(SetIndexOptionContext.class,i);
29283 		}
29284 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
29285 		public List<ResumableIndexOptionsContext> resumableIndexOptions() {
29286 			return getRuleContexts(ResumableIndexOptionsContext.class);
29287 		}
29288 		public ResumableIndexOptionsContext resumableIndexOptions(int i) {
29289 			return getRuleContext(ResumableIndexOptionsContext.class,i);
29290 		}
29291 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
29292 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
29293 		public AlterIndexClauseContext(ParserRuleContext parent, int invokingState) {
29294 			super(parent, invokingState);
29295 		}
29296 		@Override public int getRuleIndex() { return RULE_alterIndexClause; }
29297 		@Override
29298 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29299 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndexClause(this);
29300 			else return visitor.visitChildren(this);
29301 		}
29302 	}
29303 
29304 	public final AlterIndexClauseContext alterIndexClause() throws RecognitionException {
29305 		AlterIndexClauseContext _localctx = new AlterIndexClauseContext(_ctx, getState());
29306 		enterRule(_localctx, 588, RULE_alterIndexClause);
29307 		int _la;
29308 		try {
29309 			setState(4179);
29310 			_errHandler.sync(this);
29311 			switch (_input.LA(1)) {
29312 			case REBUILD:
29313 				enterOuterAlt(_localctx, 1);
29314 				{
29315 				setState(4117);
29316 				match(REBUILD);
29317 				setState(4124);
29318 				_errHandler.sync(this);
29319 				_la = _input.LA(1);
29320 				if (_la==PARTITION) {
29321 					{
29322 					setState(4118);
29323 					match(PARTITION);
29324 					setState(4119);
29325 					match(EQ_);
29326 					setState(4122);
29327 					_errHandler.sync(this);
29328 					switch (_input.LA(1)) {
29329 					case ALL:
29330 						{
29331 						setState(4120);
29332 						match(ALL);
29333 						}
29334 						break;
29335 					case NOT_:
29336 					case TILDE_:
29337 					case PLUS_:
29338 					case MINUS_:
29339 					case LP_:
29340 					case LBE_:
29341 					case QUESTION_:
29342 					case DOLLAR_:
29343 					case TRUNCATE:
29344 					case SCHEMA:
29345 					case COLUMNS:
29346 					case PRECISION:
29347 					case FUNCTION:
29348 					case TRIGGER:
29349 					case CASE:
29350 					case CAST:
29351 					case SUBSTRING:
29352 					case OFF:
29353 					case IF:
29354 					case NOT:
29355 					case NULL:
29356 					case TRUE:
29357 					case FALSE:
29358 					case EXISTS:
29359 					case GROUP:
29360 					case LIMIT:
29361 					case OFFSET:
29362 					case SAVEPOINT:
29363 					case BOOLEAN:
29364 					case CHAR:
29365 					case ARRAY:
29366 					case INTERVAL:
29367 					case DATE:
29368 					case TIME:
29369 					case TIMESTAMP:
29370 					case LOCALTIME:
29371 					case LOCALTIMESTAMP:
29372 					case QUARTER:
29373 					case WEEK:
29374 					case DAY:
29375 					case SECOND:
29376 					case MICROSECOND:
29377 					case MAX:
29378 					case MIN:
29379 					case SUM:
29380 					case COUNT:
29381 					case AVG:
29382 					case ENABLE:
29383 					case DISABLE:
29384 					case INSTANCE:
29385 					case DO:
29386 					case DEFINER:
29387 					case SQL:
29388 					case CASCADED:
29389 					case LOCAL:
29390 					case NEXT:
29391 					case NAME:
29392 					case INTEGER:
29393 					case TYPE:
29394 					case TEXT:
29395 					case VIEWS:
29396 					case READ_ONLY:
29397 					case DATABASE:
29398 					case RETURNS:
29399 					case DATEPART:
29400 					case PASSWORD:
29401 					case BINARY:
29402 					case HIDDEN_:
29403 					case MOD:
29404 					case PARTITION:
29405 					case PARTITIONS:
29406 					case TOP:
29407 					case ROW:
29408 					case ROWS:
29409 					case XOR:
29410 					case ALWAYS:
29411 					case ROLE:
29412 					case START:
29413 					case ALGORITHM:
29414 					case AUTO:
29415 					case BLOCKERS:
29416 					case CLUSTERED:
29417 					case NONCLUSTERED:
29418 					case COLUMNSTORE:
29419 					case CONTENT:
29420 					case CONVERT:
29421 					case YEARS:
29422 					case MONTHS:
29423 					case WEEKS:
29424 					case DAYS:
29425 					case MINUTES:
29426 					case DENY:
29427 					case DETERMINISTIC:
29428 					case DISTRIBUTION:
29429 					case DOCUMENT:
29430 					case DURABILITY:
29431 					case ENCRYPTED:
29432 					case FILESTREAM:
29433 					case FILETABLE:
29434 					case FILLFACTOR:
29435 					case FOLLOWING:
29436 					case HASH:
29437 					case HEAP:
29438 					case INBOUND:
29439 					case OUTBOUND:
29440 					case UNBOUNDED:
29441 					case INFINITE:
29442 					case LOGIN:
29443 					case MASKED:
29444 					case MAXDOP:
29445 					case MOVE:
29446 					case NOCHECK:
29447 					case OBJECT:
29448 					case ONLINE:
29449 					case OVER:
29450 					case PAGE:
29451 					case PAUSED:
29452 					case PERIOD:
29453 					case PERSISTED:
29454 					case PRECEDING:
29455 					case RANDOMIZED:
29456 					case RANGE:
29457 					case REBUILD:
29458 					case REPLICATE:
29459 					case REPLICATION:
29460 					case RESUMABLE:
29461 					case ROWGUIDCOL:
29462 					case SAVE:
29463 					case SELF:
29464 					case SPARSE:
29465 					case SWITCH:
29466 					case TRAN:
29467 					case TRANCOUNT:
29468 					case CONTROL:
29469 					case CONCAT:
29470 					case TAKE:
29471 					case OWNERSHIP:
29472 					case DEFINITION:
29473 					case APPLICATION:
29474 					case ASSEMBLY:
29475 					case SYMMETRIC:
29476 					case ASYMMETRIC:
29477 					case SERVER:
29478 					case RECEIVE:
29479 					case CHANGE:
29480 					case TRACE:
29481 					case TRACKING:
29482 					case RESOURCES:
29483 					case SETTINGS:
29484 					case STATE:
29485 					case AVAILABILITY:
29486 					case CREDENTIAL:
29487 					case ENDPOINT:
29488 					case EVENT:
29489 					case NOTIFICATION:
29490 					case LINKED:
29491 					case AUDIT:
29492 					case DDL:
29493 					case XML:
29494 					case IMPERSONATE:
29495 					case SECURABLES:
29496 					case AUTHENTICATE:
29497 					case EXTERNAL:
29498 					case ACCESS:
29499 					case ADMINISTER:
29500 					case BULK:
29501 					case OPERATIONS:
29502 					case UNSAFE:
29503 					case SHUTDOWN:
29504 					case SCOPED:
29505 					case CONFIGURATION:
29506 					case DATASPACE:
29507 					case SERVICE:
29508 					case CERTIFICATE:
29509 					case CONTRACT:
29510 					case ENCRYPTION:
29511 					case MASTER:
29512 					case DATA:
29513 					case SOURCE:
29514 					case FILE:
29515 					case FORMAT:
29516 					case LIBRARY:
29517 					case FULLTEXT:
29518 					case MASK:
29519 					case UNMASK:
29520 					case MESSAGE:
29521 					case REMOTE:
29522 					case BINDING:
29523 					case ROUTE:
29524 					case SECURITY:
29525 					case POLICY:
29526 					case AGGREGATE:
29527 					case QUEUE:
29528 					case RULE:
29529 					case SYNONYM:
29530 					case COLLECTION:
29531 					case SCRIPT:
29532 					case KILL:
29533 					case BACKUP:
29534 					case LOG:
29535 					case SHOWPLAN:
29536 					case SUBSCRIBE:
29537 					case QUERY:
29538 					case NOTIFICATIONS:
29539 					case CHECKPOINT:
29540 					case SEQUENCE:
29541 					case ABORT_AFTER_WAIT:
29542 					case ALLOW_PAGE_LOCKS:
29543 					case ALLOW_ROW_LOCKS:
29544 					case ALL_SPARSE_COLUMNS:
29545 					case BUCKET_COUNT:
29546 					case COLUMNSTORE_ARCHIVE:
29547 					case COLUMN_ENCRYPTION_KEY:
29548 					case COLUMN_SET:
29549 					case COMPRESSION_DELAY:
29550 					case DATABASE_DEAULT:
29551 					case DATA_COMPRESSION:
29552 					case DATA_CONSISTENCY_CHECK:
29553 					case ENCRYPTION_TYPE:
29554 					case SYSTEM_TIME:
29555 					case SYSTEM_VERSIONING:
29556 					case TEXTIMAGE_ON:
29557 					case WAIT_AT_LOW_PRIORITY:
29558 					case STATISTICS_INCREMENTAL:
29559 					case STATISTICS_NORECOMPUTE:
29560 					case ROUND_ROBIN:
29561 					case SCHEMA_AND_DATA:
29562 					case SCHEMA_ONLY:
29563 					case SORT_IN_TEMPDB:
29564 					case IGNORE_DUP_KEY:
29565 					case IMPLICIT_TRANSACTIONS:
29566 					case MAX_DURATION:
29567 					case MEMORY_OPTIMIZED:
29568 					case MIGRATION_STATE:
29569 					case PAD_INDEX:
29570 					case REMOTE_DATA_ARCHIVE:
29571 					case FILESTREAM_ON:
29572 					case FILETABLE_COLLATE_FILENAME:
29573 					case FILETABLE_DIRECTORY:
29574 					case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
29575 					case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
29576 					case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
29577 					case FILTER_PREDICATE:
29578 					case HISTORY_RETENTION_PERIOD:
29579 					case HISTORY_TABLE:
29580 					case LOCK_ESCALATION:
29581 					case DROP_EXISTING:
29582 					case ROW_NUMBER:
29583 					case FIRST:
29584 					case DATETIME2:
29585 					case OUTPUT:
29586 					case INSERTED:
29587 					case DELETED:
29588 					case FILENAME:
29589 					case MAXSIZE:
29590 					case FILEGROWTH:
29591 					case UNLIMITED:
29592 					case KB:
29593 					case MB:
29594 					case GB:
29595 					case TB:
29596 					case MEMORY_OPTIMIZED_DATA:
29597 					case FILEGROUP:
29598 					case NON_TRANSACTED_ACCESS:
29599 					case DB_CHAINING:
29600 					case TRUSTWORTHY:
29601 					case FORWARD_ONLY:
29602 					case KEYSET:
29603 					case FAST_FORWARD:
29604 					case SCROLL_LOCKS:
29605 					case OPTIMISTIC:
29606 					case TYPE_WARNING:
29607 					case SCHEMABINDING:
29608 					case CALLER:
29609 					case OWNER:
29610 					case SNAPSHOT:
29611 					case REPEATABLE:
29612 					case SERIALIZABLE:
29613 					case NATIVE_COMPILATION:
29614 					case VIEW_METADATA:
29615 					case INSTEAD:
29616 					case APPEND:
29617 					case INCREMENT:
29618 					case CACHE:
29619 					case MINVALUE:
29620 					case MAXVALUE:
29621 					case RESTART:
29622 					case LOB_COMPACTION:
29623 					case COMPRESS_ALL_ROW_GROUPS:
29624 					case REORGANIZE:
29625 					case RESUME:
29626 					case PAUSE:
29627 					case ABORT:
29628 					case ACCELERATED_DATABASE_RECOVERY:
29629 					case PERSISTENT_VERSION_STORE_FILEGROUP:
29630 					case IMMEDIATE:
29631 					case NO_WAIT:
29632 					case TARGET_RECOVERY_TIME:
29633 					case SECONDS:
29634 					case HONOR_BROKER_PRIORITY:
29635 					case ERROR_BROKER_CONVERSATIONS:
29636 					case NEW_BROKER:
29637 					case DISABLE_BROKER:
29638 					case ENABLE_BROKER:
29639 					case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
29640 					case READ_COMMITTED_SNAPSHOT:
29641 					case ALLOW_SNAPSHOT_ISOLATION:
29642 					case RECURSIVE_TRIGGERS:
29643 					case QUOTED_IDENTIFIER:
29644 					case NUMERIC_ROUNDABORT:
29645 					case CONCAT_NULL_YIELDS_NULL:
29646 					case COMPATIBILITY_LEVEL:
29647 					case ARITHABORT:
29648 					case ANSI_WARNINGS:
29649 					case ANSI_PADDING:
29650 					case ANSI_NULLS:
29651 					case ANSI_NULL_DEFAULT:
29652 					case PAGE_VERIFY:
29653 					case CHECKSUM:
29654 					case TORN_PAGE_DETECTION:
29655 					case BULK_LOGGED:
29656 					case RECOVERY:
29657 					case TOTAL_EXECUTION_CPU_TIME_MS:
29658 					case TOTAL_COMPILE_CPU_TIME_MS:
29659 					case STALE_CAPTURE_POLICY_THRESHOLD:
29660 					case EXECUTION_COUNT:
29661 					case QUERY_CAPTURE_POLICY:
29662 					case WAIT_STATS_CAPTURE_MODE:
29663 					case MAX_PLANS_PER_QUERY:
29664 					case QUERY_CAPTURE_MODE:
29665 					case SIZE_BASED_CLEANUP_MODE:
29666 					case INTERVAL_LENGTH_MINUTES:
29667 					case MAX_STORAGE_SIZE_MB:
29668 					case DATA_FLUSH_INTERVAL_SECONDS:
29669 					case CLEANUP_POLICY:
29670 					case CUSTOM:
29671 					case STALE_QUERY_THRESHOLD_DAYS:
29672 					case OPERATION_MODE:
29673 					case QUERY_STORE:
29674 					case CURSOR_DEFAULT:
29675 					case GLOBAL:
29676 					case CURSOR_CLOSE_ON_COMMIT:
29677 					case HOURS:
29678 					case CHANGE_RETENTION:
29679 					case AUTO_CLEANUP:
29680 					case CHANGE_TRACKING:
29681 					case AUTOMATIC_TUNING:
29682 					case FORCE_LAST_GOOD_PLAN:
29683 					case AUTO_UPDATE_STATISTICS_ASYNC:
29684 					case AUTO_UPDATE_STATISTICS:
29685 					case AUTO_SHRINK:
29686 					case AUTO_CREATE_STATISTICS:
29687 					case INCREMENTAL:
29688 					case AUTO_CLOSE:
29689 					case DATA_RETENTION:
29690 					case TEMPORAL_HISTORY_RETENTION:
29691 					case EDITION:
29692 					case MIXED_PAGE_ALLOCATION:
29693 					case DISABLED:
29694 					case ALLOWED:
29695 					case HADR:
29696 					case MULTI_USER:
29697 					case RESTRICTED_USER:
29698 					case SINGLE_USER:
29699 					case OFFLINE:
29700 					case EMERGENCY:
29701 					case SUSPEND:
29702 					case DATE_CORRELATION_OPTIMIZATION:
29703 					case ELASTIC_POOL:
29704 					case SERVICE_OBJECTIVE:
29705 					case DATABASE_NAME:
29706 					case ALLOW_CONNECTIONS:
29707 					case GEO:
29708 					case NAMED:
29709 					case DATEFIRST:
29710 					case BACKUP_STORAGE_REDUNDANCY:
29711 					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
29712 					case SECONDARY:
29713 					case FAILOVER:
29714 					case DEFAULT_FULLTEXT_LANGUAGE:
29715 					case DEFAULT_LANGUAGE:
29716 					case INLINE:
29717 					case NESTED_TRIGGERS:
29718 					case TRANSFORM_NOISE_WORDS:
29719 					case TWO_DIGIT_YEAR_CUTOFF:
29720 					case PERSISTENT_LOG_BUFFER:
29721 					case DIRECTORY_NAME:
29722 					case DATEFORMAT:
29723 					case DELAYED_DURABILITY:
29724 					case AUTHORIZATION:
29725 					case TRANSFER:
29726 					case PROVIDER:
29727 					case SEARCH:
29728 					case MEMBER:
29729 					case IDENTIFIER_:
29730 					case DELIMITED_IDENTIFIER_:
29731 					case STRING_:
29732 					case NUMBER_:
29733 					case HEX_DIGIT_:
29734 					case BIT_NUM_:
29735 					case NCHAR_TEXT:
29736 						{
29737 						setState(4121);
29738 						expr(0);
29739 						}
29740 						break;
29741 					default:
29742 						throw new NoViableAltException(this);
29743 					}
29744 					}
29745 				}
29746 
29747 				setState(4138);
29748 				_errHandler.sync(this);
29749 				_la = _input.LA(1);
29750 				if (_la==WITH) {
29751 					{
29752 					setState(4126);
29753 					match(WITH);
29754 					setState(4127);
29755 					match(LP_);
29756 					setState(4128);
29757 					relationalIndexOption();
29758 					setState(4133);
29759 					_errHandler.sync(this);
29760 					_la = _input.LA(1);
29761 					while (_la==COMMA_) {
29762 						{
29763 						{
29764 						setState(4129);
29765 						match(COMMA_);
29766 						setState(4130);
29767 						relationalIndexOption();
29768 						}
29769 						}
29770 						setState(4135);
29771 						_errHandler.sync(this);
29772 						_la = _input.LA(1);
29773 					}
29774 					setState(4136);
29775 					match(RP_);
29776 					}
29777 				}
29778 
29779 				}
29780 				break;
29781 			case DISABLE:
29782 				enterOuterAlt(_localctx, 2);
29783 				{
29784 				setState(4140);
29785 				match(DISABLE);
29786 				}
29787 				break;
29788 			case REORGANIZE:
29789 				enterOuterAlt(_localctx, 3);
29790 				{
29791 				setState(4141);
29792 				match(REORGANIZE);
29793 				setState(4145);
29794 				_errHandler.sync(this);
29795 				_la = _input.LA(1);
29796 				if (_la==PARTITION) {
29797 					{
29798 					setState(4142);
29799 					match(PARTITION);
29800 					setState(4143);
29801 					match(EQ_);
29802 					setState(4144);
29803 					expr(0);
29804 					}
29805 				}
29806 
29807 				setState(4152);
29808 				_errHandler.sync(this);
29809 				_la = _input.LA(1);
29810 				if (_la==WITH) {
29811 					{
29812 					setState(4147);
29813 					match(WITH);
29814 					setState(4148);
29815 					match(LP_);
29816 					setState(4149);
29817 					reorganizeOption();
29818 					setState(4150);
29819 					match(RP_);
29820 					}
29821 				}
29822 
29823 				}
29824 				break;
29825 			case SET:
29826 				enterOuterAlt(_localctx, 4);
29827 				{
29828 				setState(4154);
29829 				match(SET);
29830 				setState(4155);
29831 				match(LP_);
29832 				setState(4156);
29833 				setIndexOption();
29834 				{
29835 				setState(4157);
29836 				match(COMMA_);
29837 				setState(4158);
29838 				setIndexOption();
29839 				}
29840 				setState(4160);
29841 				match(RP_);
29842 				}
29843 				break;
29844 			case RESUME:
29845 				enterOuterAlt(_localctx, 5);
29846 				{
29847 				setState(4162);
29848 				match(RESUME);
29849 				setState(4175);
29850 				_errHandler.sync(this);
29851 				_la = _input.LA(1);
29852 				if (_la==WITH) {
29853 					{
29854 					setState(4163);
29855 					match(WITH);
29856 					setState(4164);
29857 					match(LP_);
29858 					setState(4165);
29859 					resumableIndexOptions();
29860 					setState(4170);
29861 					_errHandler.sync(this);
29862 					_la = _input.LA(1);
29863 					while (_la==COMMA_) {
29864 						{
29865 						{
29866 						setState(4166);
29867 						match(COMMA_);
29868 						setState(4167);
29869 						resumableIndexOptions();
29870 						}
29871 						}
29872 						setState(4172);
29873 						_errHandler.sync(this);
29874 						_la = _input.LA(1);
29875 					}
29876 					setState(4173);
29877 					match(RP_);
29878 					}
29879 				}
29880 
29881 				}
29882 				break;
29883 			case PAUSE:
29884 				enterOuterAlt(_localctx, 6);
29885 				{
29886 				setState(4177);
29887 				match(PAUSE);
29888 				}
29889 				break;
29890 			case ABORT:
29891 				enterOuterAlt(_localctx, 7);
29892 				{
29893 				setState(4178);
29894 				match(ABORT);
29895 				}
29896 				break;
29897 			default:
29898 				throw new NoViableAltException(this);
29899 			}
29900 		}
29901 		catch (RecognitionException re) {
29902 			_localctx.exception = re;
29903 			_errHandler.reportError(this, re);
29904 			_errHandler.recover(this, re);
29905 		}
29906 		finally {
29907 			exitRule();
29908 		}
29909 		return _localctx;
29910 	}
29911 
29912 	public static class RelationalIndexOptionContext extends ParserRuleContext {
29913 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
29914 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29915 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29916 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
29917 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
29918 		public ExprContext expr() {
29919 			return getRuleContext(ExprContext.class,0);
29920 		}
29921 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
29922 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
29923 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
29924 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
29925 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
29926 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
29927 		public LowPriorityLockWaitContext lowPriorityLockWait() {
29928 			return getRuleContext(LowPriorityLockWaitContext.class,0);
29929 		}
29930 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
29931 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
29932 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
29933 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
29934 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
29935 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
29936 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
29937 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
29938 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
29939 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
29940 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
29941 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
29942 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
29943 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
29944 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
29945 		public List<PartitionNumberRangeContext> partitionNumberRange() {
29946 			return getRuleContexts(PartitionNumberRangeContext.class);
29947 		}
29948 		public PartitionNumberRangeContext partitionNumberRange(int i) {
29949 			return getRuleContext(PartitionNumberRangeContext.class,i);
29950 		}
29951 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29952 		public TerminalNode COMMA_(int i) {
29953 			return getToken(SQLServerStatementParser.COMMA_, i);
29954 		}
29955 		public RelationalIndexOptionContext(ParserRuleContext parent, int invokingState) {
29956 			super(parent, invokingState);
29957 		}
29958 		@Override public int getRuleIndex() { return RULE_relationalIndexOption; }
29959 		@Override
29960 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29961 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRelationalIndexOption(this);
29962 			else return visitor.visitChildren(this);
29963 		}
29964 	}
29965 
29966 	public final RelationalIndexOptionContext relationalIndexOption() throws RecognitionException {
29967 		RelationalIndexOptionContext _localctx = new RelationalIndexOptionContext(_ctx, getState());
29968 		enterRule(_localctx, 590, RULE_relationalIndexOption);
29969 		int _la;
29970 		try {
29971 			int _alt;
29972 			setState(4248);
29973 			_errHandler.sync(this);
29974 			switch (_input.LA(1)) {
29975 			case PAD_INDEX:
29976 				enterOuterAlt(_localctx, 1);
29977 				{
29978 				setState(4181);
29979 				match(PAD_INDEX);
29980 				setState(4182);
29981 				match(EQ_);
29982 				setState(4183);
29983 				_la = _input.LA(1);
29984 				if ( !(_la==ON || _la==OFF) ) {
29985 				_errHandler.recoverInline(this);
29986 				}
29987 				else {
29988 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29989 					_errHandler.reportMatch(this);
29990 					consume();
29991 				}
29992 				}
29993 				break;
29994 			case FILLFACTOR:
29995 				enterOuterAlt(_localctx, 2);
29996 				{
29997 				setState(4184);
29998 				match(FILLFACTOR);
29999 				setState(4185);
30000 				match(EQ_);
30001 				setState(4186);
30002 				expr(0);
30003 				}
30004 				break;
30005 			case SORT_IN_TEMPDB:
30006 				enterOuterAlt(_localctx, 3);
30007 				{
30008 				setState(4187);
30009 				match(SORT_IN_TEMPDB);
30010 				setState(4188);
30011 				match(EQ_);
30012 				setState(4189);
30013 				_la = _input.LA(1);
30014 				if ( !(_la==ON || _la==OFF) ) {
30015 				_errHandler.recoverInline(this);
30016 				}
30017 				else {
30018 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30019 					_errHandler.reportMatch(this);
30020 					consume();
30021 				}
30022 				}
30023 				break;
30024 			case IGNORE_DUP_KEY:
30025 				enterOuterAlt(_localctx, 4);
30026 				{
30027 				setState(4190);
30028 				match(IGNORE_DUP_KEY);
30029 				setState(4191);
30030 				match(EQ_);
30031 				setState(4192);
30032 				_la = _input.LA(1);
30033 				if ( !(_la==ON || _la==OFF) ) {
30034 				_errHandler.recoverInline(this);
30035 				}
30036 				else {
30037 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30038 					_errHandler.reportMatch(this);
30039 					consume();
30040 				}
30041 				}
30042 				break;
30043 			case STATISTICS_NORECOMPUTE:
30044 				enterOuterAlt(_localctx, 5);
30045 				{
30046 				setState(4193);
30047 				match(STATISTICS_NORECOMPUTE);
30048 				setState(4194);
30049 				match(EQ_);
30050 				setState(4195);
30051 				_la = _input.LA(1);
30052 				if ( !(_la==ON || _la==OFF) ) {
30053 				_errHandler.recoverInline(this);
30054 				}
30055 				else {
30056 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30057 					_errHandler.reportMatch(this);
30058 					consume();
30059 				}
30060 				}
30061 				break;
30062 			case STATISTICS_INCREMENTAL:
30063 				enterOuterAlt(_localctx, 6);
30064 				{
30065 				setState(4196);
30066 				match(STATISTICS_INCREMENTAL);
30067 				setState(4197);
30068 				match(EQ_);
30069 				setState(4198);
30070 				_la = _input.LA(1);
30071 				if ( !(_la==ON || _la==OFF) ) {
30072 				_errHandler.recoverInline(this);
30073 				}
30074 				else {
30075 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30076 					_errHandler.reportMatch(this);
30077 					consume();
30078 				}
30079 				}
30080 				break;
30081 			case DROP_EXISTING:
30082 				enterOuterAlt(_localctx, 7);
30083 				{
30084 				setState(4199);
30085 				match(DROP_EXISTING);
30086 				setState(4200);
30087 				match(EQ_);
30088 				setState(4201);
30089 				_la = _input.LA(1);
30090 				if ( !(_la==ON || _la==OFF) ) {
30091 				_errHandler.recoverInline(this);
30092 				}
30093 				else {
30094 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30095 					_errHandler.reportMatch(this);
30096 					consume();
30097 				}
30098 				}
30099 				break;
30100 			case ONLINE:
30101 				enterOuterAlt(_localctx, 8);
30102 				{
30103 				setState(4202);
30104 				match(ONLINE);
30105 				setState(4203);
30106 				match(EQ_);
30107 				setState(4209);
30108 				_errHandler.sync(this);
30109 				switch (_input.LA(1)) {
30110 				case ON:
30111 					{
30112 					setState(4204);
30113 					match(ON);
30114 					setState(4206);
30115 					_errHandler.sync(this);
30116 					_la = _input.LA(1);
30117 					if (_la==WAIT_AT_LOW_PRIORITY) {
30118 						{
30119 						setState(4205);
30120 						lowPriorityLockWait();
30121 						}
30122 					}
30123 
30124 					}
30125 					break;
30126 				case OFF:
30127 					{
30128 					setState(4208);
30129 					match(OFF);
30130 					}
30131 					break;
30132 				default:
30133 					throw new NoViableAltException(this);
30134 				}
30135 				}
30136 				break;
30137 			case RESUMABLE:
30138 				enterOuterAlt(_localctx, 9);
30139 				{
30140 				setState(4211);
30141 				match(RESUMABLE);
30142 				setState(4212);
30143 				match(EQ_);
30144 				setState(4213);
30145 				_la = _input.LA(1);
30146 				if ( !(_la==ON || _la==OFF) ) {
30147 				_errHandler.recoverInline(this);
30148 				}
30149 				else {
30150 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30151 					_errHandler.reportMatch(this);
30152 					consume();
30153 				}
30154 				}
30155 				break;
30156 			case MAX_DURATION:
30157 				enterOuterAlt(_localctx, 10);
30158 				{
30159 				setState(4214);
30160 				match(MAX_DURATION);
30161 				setState(4215);
30162 				match(EQ_);
30163 				setState(4216);
30164 				expr(0);
30165 				setState(4218);
30166 				_errHandler.sync(this);
30167 				_la = _input.LA(1);
30168 				if (_la==MINUTES) {
30169 					{
30170 					setState(4217);
30171 					match(MINUTES);
30172 					}
30173 				}
30174 
30175 				}
30176 				break;
30177 			case ALLOW_ROW_LOCKS:
30178 				enterOuterAlt(_localctx, 11);
30179 				{
30180 				setState(4220);
30181 				match(ALLOW_ROW_LOCKS);
30182 				setState(4221);
30183 				match(EQ_);
30184 				setState(4222);
30185 				_la = _input.LA(1);
30186 				if ( !(_la==ON || _la==OFF) ) {
30187 				_errHandler.recoverInline(this);
30188 				}
30189 				else {
30190 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30191 					_errHandler.reportMatch(this);
30192 					consume();
30193 				}
30194 				}
30195 				break;
30196 			case ALLOW_PAGE_LOCKS:
30197 				enterOuterAlt(_localctx, 12);
30198 				{
30199 				setState(4223);
30200 				match(ALLOW_PAGE_LOCKS);
30201 				setState(4224);
30202 				match(EQ_);
30203 				setState(4225);
30204 				_la = _input.LA(1);
30205 				if ( !(_la==ON || _la==OFF) ) {
30206 				_errHandler.recoverInline(this);
30207 				}
30208 				else {
30209 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30210 					_errHandler.reportMatch(this);
30211 					consume();
30212 				}
30213 				}
30214 				break;
30215 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
30216 				enterOuterAlt(_localctx, 13);
30217 				{
30218 				setState(4226);
30219 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
30220 				setState(4227);
30221 				match(EQ_);
30222 				setState(4228);
30223 				_la = _input.LA(1);
30224 				if ( !(_la==ON || _la==OFF) ) {
30225 				_errHandler.recoverInline(this);
30226 				}
30227 				else {
30228 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30229 					_errHandler.reportMatch(this);
30230 					consume();
30231 				}
30232 				}
30233 				break;
30234 			case MAXDOP:
30235 				enterOuterAlt(_localctx, 14);
30236 				{
30237 				setState(4229);
30238 				match(MAXDOP);
30239 				setState(4230);
30240 				match(EQ_);
30241 				setState(4231);
30242 				expr(0);
30243 				}
30244 				break;
30245 			case DATA_COMPRESSION:
30246 				enterOuterAlt(_localctx, 15);
30247 				{
30248 				setState(4232);
30249 				match(DATA_COMPRESSION);
30250 				setState(4233);
30251 				match(EQ_);
30252 				setState(4234);
30253 				_la = _input.LA(1);
30254 				if ( !(((((_la - 224)) & ~0x3f) == 0 && ((1L << (_la - 224)) & ((1L << (ROW - 224)) | (1L << (COLUMNSTORE - 224)) | (1L << (NONE - 224)) | (1L << (PAGE - 224)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
30255 				_errHandler.recoverInline(this);
30256 				}
30257 				else {
30258 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30259 					_errHandler.reportMatch(this);
30260 					consume();
30261 				}
30262 				setState(4246);
30263 				_errHandler.sync(this);
30264 				_la = _input.LA(1);
30265 				if (_la==ON) {
30266 					{
30267 					setState(4235);
30268 					match(ON);
30269 					setState(4236);
30270 					match(PARTITIONS);
30271 					setState(4237);
30272 					match(LP_);
30273 					setState(4238);
30274 					partitionNumberRange();
30275 					setState(4243);
30276 					_errHandler.sync(this);
30277 					_alt = getInterpreter().adaptivePredict(_input,456,_ctx);
30278 					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
30279 						if ( _alt==1 ) {
30280 							{
30281 							{
30282 							setState(4239);
30283 							match(COMMA_);
30284 							setState(4240);
30285 							partitionNumberRange();
30286 							}
30287 							} 
30288 						}
30289 						setState(4245);
30290 						_errHandler.sync(this);
30291 						_alt = getInterpreter().adaptivePredict(_input,456,_ctx);
30292 					}
30293 					}
30294 				}
30295 
30296 				}
30297 				break;
30298 			default:
30299 				throw new NoViableAltException(this);
30300 			}
30301 		}
30302 		catch (RecognitionException re) {
30303 			_localctx.exception = re;
30304 			_errHandler.reportError(this, re);
30305 			_errHandler.recover(this, re);
30306 		}
30307 		finally {
30308 			exitRule();
30309 		}
30310 		return _localctx;
30311 	}
30312 
30313 	public static class PartitionNumberRangeContext extends ParserRuleContext {
30314 		public List<ExprContext> expr() {
30315 			return getRuleContexts(ExprContext.class);
30316 		}
30317 		public ExprContext expr(int i) {
30318 			return getRuleContext(ExprContext.class,i);
30319 		}
30320 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
30321 		public PartitionNumberRangeContext(ParserRuleContext parent, int invokingState) {
30322 			super(parent, invokingState);
30323 		}
30324 		@Override public int getRuleIndex() { return RULE_partitionNumberRange; }
30325 		@Override
30326 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30327 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionNumberRange(this);
30328 			else return visitor.visitChildren(this);
30329 		}
30330 	}
30331 
30332 	public final PartitionNumberRangeContext partitionNumberRange() throws RecognitionException {
30333 		PartitionNumberRangeContext _localctx = new PartitionNumberRangeContext(_ctx, getState());
30334 		enterRule(_localctx, 592, RULE_partitionNumberRange);
30335 		int _la;
30336 		try {
30337 			enterOuterAlt(_localctx, 1);
30338 			{
30339 			setState(4250);
30340 			expr(0);
30341 			setState(4253);
30342 			_errHandler.sync(this);
30343 			_la = _input.LA(1);
30344 			if (_la==TO) {
30345 				{
30346 				setState(4251);
30347 				match(TO);
30348 				setState(4252);
30349 				expr(0);
30350 				}
30351 			}
30352 
30353 			}
30354 		}
30355 		catch (RecognitionException re) {
30356 			_localctx.exception = re;
30357 			_errHandler.reportError(this, re);
30358 			_errHandler.recover(this, re);
30359 		}
30360 		finally {
30361 			exitRule();
30362 		}
30363 		return _localctx;
30364 	}
30365 
30366 	public static class ReorganizeOptionContext extends ParserRuleContext {
30367 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
30368 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30369 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30370 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
30371 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
30372 		public ReorganizeOptionContext(ParserRuleContext parent, int invokingState) {
30373 			super(parent, invokingState);
30374 		}
30375 		@Override public int getRuleIndex() { return RULE_reorganizeOption; }
30376 		@Override
30377 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30378 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitReorganizeOption(this);
30379 			else return visitor.visitChildren(this);
30380 		}
30381 	}
30382 
30383 	public final ReorganizeOptionContext reorganizeOption() throws RecognitionException {
30384 		ReorganizeOptionContext _localctx = new ReorganizeOptionContext(_ctx, getState());
30385 		enterRule(_localctx, 594, RULE_reorganizeOption);
30386 		int _la;
30387 		try {
30388 			setState(4261);
30389 			_errHandler.sync(this);
30390 			switch (_input.LA(1)) {
30391 			case LOB_COMPACTION:
30392 				enterOuterAlt(_localctx, 1);
30393 				{
30394 				setState(4255);
30395 				match(LOB_COMPACTION);
30396 				setState(4256);
30397 				match(EQ_);
30398 				setState(4257);
30399 				_la = _input.LA(1);
30400 				if ( !(_la==ON || _la==OFF) ) {
30401 				_errHandler.recoverInline(this);
30402 				}
30403 				else {
30404 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30405 					_errHandler.reportMatch(this);
30406 					consume();
30407 				}
30408 				}
30409 				break;
30410 			case COMPRESS_ALL_ROW_GROUPS:
30411 				enterOuterAlt(_localctx, 2);
30412 				{
30413 				setState(4258);
30414 				match(COMPRESS_ALL_ROW_GROUPS);
30415 				setState(4259);
30416 				match(EQ_);
30417 				setState(4260);
30418 				_la = _input.LA(1);
30419 				if ( !(_la==ON || _la==OFF) ) {
30420 				_errHandler.recoverInline(this);
30421 				}
30422 				else {
30423 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30424 					_errHandler.reportMatch(this);
30425 					consume();
30426 				}
30427 				}
30428 				break;
30429 			default:
30430 				throw new NoViableAltException(this);
30431 			}
30432 		}
30433 		catch (RecognitionException re) {
30434 			_localctx.exception = re;
30435 			_errHandler.reportError(this, re);
30436 			_errHandler.recover(this, re);
30437 		}
30438 		finally {
30439 			exitRule();
30440 		}
30441 		return _localctx;
30442 	}
30443 
30444 	public static class SetIndexOptionContext extends ParserRuleContext {
30445 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
30446 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30447 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30448 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
30449 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
30450 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
30451 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
30452 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
30453 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
30454 		public ExprContext expr() {
30455 			return getRuleContext(ExprContext.class,0);
30456 		}
30457 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
30458 		public SetIndexOptionContext(ParserRuleContext parent, int invokingState) {
30459 			super(parent, invokingState);
30460 		}
30461 		@Override public int getRuleIndex() { return RULE_setIndexOption; }
30462 		@Override
30463 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30464 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetIndexOption(this);
30465 			else return visitor.visitChildren(this);
30466 		}
30467 	}
30468 
30469 	public final SetIndexOptionContext setIndexOption() throws RecognitionException {
30470 		SetIndexOptionContext _localctx = new SetIndexOptionContext(_ctx, getState());
30471 		enterRule(_localctx, 596, RULE_setIndexOption);
30472 		int _la;
30473 		try {
30474 			setState(4284);
30475 			_errHandler.sync(this);
30476 			switch (_input.LA(1)) {
30477 			case ALLOW_ROW_LOCKS:
30478 				enterOuterAlt(_localctx, 1);
30479 				{
30480 				setState(4263);
30481 				match(ALLOW_ROW_LOCKS);
30482 				setState(4264);
30483 				match(EQ_);
30484 				setState(4265);
30485 				_la = _input.LA(1);
30486 				if ( !(_la==ON || _la==OFF) ) {
30487 				_errHandler.recoverInline(this);
30488 				}
30489 				else {
30490 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30491 					_errHandler.reportMatch(this);
30492 					consume();
30493 				}
30494 				}
30495 				break;
30496 			case ALLOW_PAGE_LOCKS:
30497 				enterOuterAlt(_localctx, 2);
30498 				{
30499 				setState(4266);
30500 				match(ALLOW_PAGE_LOCKS);
30501 				setState(4267);
30502 				match(EQ_);
30503 				setState(4268);
30504 				_la = _input.LA(1);
30505 				if ( !(_la==ON || _la==OFF) ) {
30506 				_errHandler.recoverInline(this);
30507 				}
30508 				else {
30509 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30510 					_errHandler.reportMatch(this);
30511 					consume();
30512 				}
30513 				}
30514 				break;
30515 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
30516 				enterOuterAlt(_localctx, 3);
30517 				{
30518 				setState(4269);
30519 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
30520 				setState(4270);
30521 				match(EQ_);
30522 				setState(4271);
30523 				_la = _input.LA(1);
30524 				if ( !(_la==ON || _la==OFF) ) {
30525 				_errHandler.recoverInline(this);
30526 				}
30527 				else {
30528 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30529 					_errHandler.reportMatch(this);
30530 					consume();
30531 				}
30532 				}
30533 				break;
30534 			case IGNORE_DUP_KEY:
30535 				enterOuterAlt(_localctx, 4);
30536 				{
30537 				setState(4272);
30538 				match(IGNORE_DUP_KEY);
30539 				setState(4273);
30540 				match(EQ_);
30541 				setState(4274);
30542 				_la = _input.LA(1);
30543 				if ( !(_la==ON || _la==OFF) ) {
30544 				_errHandler.recoverInline(this);
30545 				}
30546 				else {
30547 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30548 					_errHandler.reportMatch(this);
30549 					consume();
30550 				}
30551 				}
30552 				break;
30553 			case STATISTICS_NORECOMPUTE:
30554 				enterOuterAlt(_localctx, 5);
30555 				{
30556 				setState(4275);
30557 				match(STATISTICS_NORECOMPUTE);
30558 				setState(4276);
30559 				match(EQ_);
30560 				setState(4277);
30561 				_la = _input.LA(1);
30562 				if ( !(_la==ON || _la==OFF) ) {
30563 				_errHandler.recoverInline(this);
30564 				}
30565 				else {
30566 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30567 					_errHandler.reportMatch(this);
30568 					consume();
30569 				}
30570 				}
30571 				break;
30572 			case COMPRESSION_DELAY:
30573 				enterOuterAlt(_localctx, 6);
30574 				{
30575 				setState(4278);
30576 				match(COMPRESSION_DELAY);
30577 				setState(4279);
30578 				match(EQ_);
30579 				{
30580 				setState(4280);
30581 				expr(0);
30582 				setState(4282);
30583 				_errHandler.sync(this);
30584 				_la = _input.LA(1);
30585 				if (_la==MINUTES) {
30586 					{
30587 					setState(4281);
30588 					match(MINUTES);
30589 					}
30590 				}
30591 
30592 				}
30593 				}
30594 				break;
30595 			default:
30596 				throw new NoViableAltException(this);
30597 			}
30598 		}
30599 		catch (RecognitionException re) {
30600 			_localctx.exception = re;
30601 			_errHandler.reportError(this, re);
30602 			_errHandler.recover(this, re);
30603 		}
30604 		finally {
30605 			exitRule();
30606 		}
30607 		return _localctx;
30608 	}
30609 
30610 	public static class ResumableIndexOptionsContext extends ParserRuleContext {
30611 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
30612 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30613 		public ExprContext expr() {
30614 			return getRuleContext(ExprContext.class,0);
30615 		}
30616 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
30617 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
30618 		public LowPriorityLockWaitContext lowPriorityLockWait() {
30619 			return getRuleContext(LowPriorityLockWaitContext.class,0);
30620 		}
30621 		public ResumableIndexOptionsContext(ParserRuleContext parent, int invokingState) {
30622 			super(parent, invokingState);
30623 		}
30624 		@Override public int getRuleIndex() { return RULE_resumableIndexOptions; }
30625 		@Override
30626 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30627 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitResumableIndexOptions(this);
30628 			else return visitor.visitChildren(this);
30629 		}
30630 	}
30631 
30632 	public final ResumableIndexOptionsContext resumableIndexOptions() throws RecognitionException {
30633 		ResumableIndexOptionsContext _localctx = new ResumableIndexOptionsContext(_ctx, getState());
30634 		enterRule(_localctx, 598, RULE_resumableIndexOptions);
30635 		int _la;
30636 		try {
30637 			setState(4296);
30638 			_errHandler.sync(this);
30639 			switch (_input.LA(1)) {
30640 			case MAXDOP:
30641 				enterOuterAlt(_localctx, 1);
30642 				{
30643 				setState(4286);
30644 				match(MAXDOP);
30645 				setState(4287);
30646 				match(EQ_);
30647 				setState(4288);
30648 				expr(0);
30649 				}
30650 				break;
30651 			case MAX_DURATION:
30652 				enterOuterAlt(_localctx, 2);
30653 				{
30654 				setState(4289);
30655 				match(MAX_DURATION);
30656 				setState(4290);
30657 				match(EQ_);
30658 				setState(4291);
30659 				expr(0);
30660 				setState(4293);
30661 				_errHandler.sync(this);
30662 				_la = _input.LA(1);
30663 				if (_la==MINUTES) {
30664 					{
30665 					setState(4292);
30666 					match(MINUTES);
30667 					}
30668 				}
30669 
30670 				}
30671 				break;
30672 			case WAIT_AT_LOW_PRIORITY:
30673 				enterOuterAlt(_localctx, 3);
30674 				{
30675 				setState(4295);
30676 				lowPriorityLockWait();
30677 				}
30678 				break;
30679 			default:
30680 				throw new NoViableAltException(this);
30681 			}
30682 		}
30683 		catch (RecognitionException re) {
30684 			_localctx.exception = re;
30685 			_errHandler.reportError(this, re);
30686 			_errHandler.recover(this, re);
30687 		}
30688 		finally {
30689 			exitRule();
30690 		}
30691 		return _localctx;
30692 	}
30693 
30694 	public static class AlterDatabaseClauseContext extends ParserRuleContext {
30695 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
30696 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
30697 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30698 		public DatabaseNameContext databaseName() {
30699 			return getRuleContext(DatabaseNameContext.class,0);
30700 		}
30701 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
30702 		public IgnoredIdentifierContext ignoredIdentifier() {
30703 			return getRuleContext(IgnoredIdentifierContext.class,0);
30704 		}
30705 		public FileAndFilegroupOptionsContext fileAndFilegroupOptions() {
30706 			return getRuleContext(FileAndFilegroupOptionsContext.class,0);
30707 		}
30708 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
30709 		public List<AlterDatabaseOptionSpecContext> alterDatabaseOptionSpec() {
30710 			return getRuleContexts(AlterDatabaseOptionSpecContext.class);
30711 		}
30712 		public AlterDatabaseOptionSpecContext alterDatabaseOptionSpec(int i) {
30713 			return getRuleContext(AlterDatabaseOptionSpecContext.class,i);
30714 		}
30715 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30716 		public TerminalNode COMMA_(int i) {
30717 			return getToken(SQLServerStatementParser.COMMA_, i);
30718 		}
30719 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
30720 		public TerminationContext termination() {
30721 			return getRuleContext(TerminationContext.class,0);
30722 		}
30723 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30724 		public List<EditionOptionsContext> editionOptions() {
30725 			return getRuleContexts(EditionOptionsContext.class);
30726 		}
30727 		public EditionOptionsContext editionOptions(int i) {
30728 			return getRuleContext(EditionOptionsContext.class,i);
30729 		}
30730 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30731 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
30732 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
30733 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
30734 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
30735 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30736 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
30737 		public List<AddSecondaryOptionContext> addSecondaryOption() {
30738 			return getRuleContexts(AddSecondaryOptionContext.class);
30739 		}
30740 		public AddSecondaryOptionContext addSecondaryOption(int i) {
30741 			return getRuleContext(AddSecondaryOptionContext.class,i);
30742 		}
30743 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
30744 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
30745 		public AlterDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
30746 			super(parent, invokingState);
30747 		}
30748 		@Override public int getRuleIndex() { return RULE_alterDatabaseClause; }
30749 		@Override
30750 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30751 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseClause(this);
30752 			else return visitor.visitChildren(this);
30753 		}
30754 	}
30755 
30756 	public final AlterDatabaseClauseContext alterDatabaseClause() throws RecognitionException {
30757 		AlterDatabaseClauseContext _localctx = new AlterDatabaseClauseContext(_ctx, getState());
30758 		enterRule(_localctx, 600, RULE_alterDatabaseClause);
30759 		int _la;
30760 		try {
30761 			setState(4352);
30762 			_errHandler.sync(this);
30763 			switch ( getInterpreter().adaptivePredict(_input,470,_ctx) ) {
30764 			case 1:
30765 				enterOuterAlt(_localctx, 1);
30766 				{
30767 				setState(4298);
30768 				match(MODIFY);
30769 				setState(4299);
30770 				match(NAME);
30771 				setState(4300);
30772 				match(EQ_);
30773 				setState(4301);
30774 				databaseName();
30775 				}
30776 				break;
30777 			case 2:
30778 				enterOuterAlt(_localctx, 2);
30779 				{
30780 				setState(4302);
30781 				match(COLLATE);
30782 				setState(4303);
30783 				ignoredIdentifier();
30784 				}
30785 				break;
30786 			case 3:
30787 				enterOuterAlt(_localctx, 3);
30788 				{
30789 				setState(4304);
30790 				fileAndFilegroupOptions();
30791 				}
30792 				break;
30793 			case 4:
30794 				enterOuterAlt(_localctx, 4);
30795 				{
30796 				setState(4305);
30797 				match(SET);
30798 				setState(4306);
30799 				alterDatabaseOptionSpec();
30800 				setState(4311);
30801 				_errHandler.sync(this);
30802 				_la = _input.LA(1);
30803 				while (_la==COMMA_) {
30804 					{
30805 					{
30806 					setState(4307);
30807 					match(COMMA_);
30808 					setState(4308);
30809 					alterDatabaseOptionSpec();
30810 					}
30811 					}
30812 					setState(4313);
30813 					_errHandler.sync(this);
30814 					_la = _input.LA(1);
30815 				}
30816 				setState(4316);
30817 				_errHandler.sync(this);
30818 				_la = _input.LA(1);
30819 				if (_la==WITH) {
30820 					{
30821 					setState(4314);
30822 					match(WITH);
30823 					setState(4315);
30824 					termination();
30825 					}
30826 				}
30827 
30828 				}
30829 				break;
30830 			case 5:
30831 				enterOuterAlt(_localctx, 5);
30832 				{
30833 				setState(4318);
30834 				match(MODIFY);
30835 				setState(4319);
30836 				match(LP_);
30837 				setState(4320);
30838 				editionOptions();
30839 				setState(4325);
30840 				_errHandler.sync(this);
30841 				_la = _input.LA(1);
30842 				while (_la==COMMA_) {
30843 					{
30844 					{
30845 					setState(4321);
30846 					match(COMMA_);
30847 					setState(4322);
30848 					editionOptions();
30849 					}
30850 					}
30851 					setState(4327);
30852 					_errHandler.sync(this);
30853 					_la = _input.LA(1);
30854 				}
30855 				setState(4328);
30856 				match(RP_);
30857 				}
30858 				break;
30859 			case 6:
30860 				enterOuterAlt(_localctx, 6);
30861 				{
30862 				setState(4330);
30863 				match(MODIFY);
30864 				setState(4331);
30865 				match(BACKUP_STORAGE_REDUNDANCY);
30866 				setState(4332);
30867 				match(EQ_);
30868 				setState(4333);
30869 				match(STRING_);
30870 				}
30871 				break;
30872 			case 7:
30873 				enterOuterAlt(_localctx, 7);
30874 				{
30875 				setState(4334);
30876 				match(ADD);
30877 				setState(4335);
30878 				match(SECONDARY);
30879 				setState(4336);
30880 				match(ON);
30881 				setState(4337);
30882 				match(SERVER);
30883 				setState(4338);
30884 				ignoredIdentifier();
30885 				setState(4348);
30886 				_errHandler.sync(this);
30887 				_la = _input.LA(1);
30888 				if (_la==WITH) {
30889 					{
30890 					setState(4339);
30891 					match(WITH);
30892 					setState(4340);
30893 					addSecondaryOption();
30894 					setState(4345);
30895 					_errHandler.sync(this);
30896 					_la = _input.LA(1);
30897 					while (_la==COMMA_) {
30898 						{
30899 						{
30900 						setState(4341);
30901 						match(COMMA_);
30902 						setState(4342);
30903 						addSecondaryOption();
30904 						}
30905 						}
30906 						setState(4347);
30907 						_errHandler.sync(this);
30908 						_la = _input.LA(1);
30909 					}
30910 					}
30911 				}
30912 
30913 				}
30914 				break;
30915 			case 8:
30916 				enterOuterAlt(_localctx, 8);
30917 				{
30918 				setState(4350);
30919 				match(FAILOVER);
30920 				}
30921 				break;
30922 			case 9:
30923 				enterOuterAlt(_localctx, 9);
30924 				{
30925 				setState(4351);
30926 				match(FORCE_FAILOVER_ALLOW_DATA_LOSS);
30927 				}
30928 				break;
30929 			}
30930 		}
30931 		catch (RecognitionException re) {
30932 			_localctx.exception = re;
30933 			_errHandler.reportError(this, re);
30934 			_errHandler.recover(this, re);
30935 		}
30936 		finally {
30937 			exitRule();
30938 		}
30939 		return _localctx;
30940 	}
30941 
30942 	public static class AddSecondaryOptionContext extends ParserRuleContext {
30943 		public Token SECONDARY_TYPE;
30944 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
30945 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
30946 		public TerminalNode EQ_(int i) {
30947 			return getToken(SQLServerStatementParser.EQ_, i);
30948 		}
30949 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
30950 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
30951 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
30952 		public ServiceObjectiveContext serviceObjective() {
30953 			return getRuleContext(ServiceObjectiveContext.class,0);
30954 		}
30955 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
30956 		public DatabaseNameContext databaseName() {
30957 			return getRuleContext(DatabaseNameContext.class,0);
30958 		}
30959 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
30960 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
30961 		public AddSecondaryOptionContext(ParserRuleContext parent, int invokingState) {
30962 			super(parent, invokingState);
30963 		}
30964 		@Override public int getRuleIndex() { return RULE_addSecondaryOption; }
30965 		@Override
30966 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30967 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddSecondaryOption(this);
30968 			else return visitor.visitChildren(this);
30969 		}
30970 	}
30971 
30972 	public final AddSecondaryOptionContext addSecondaryOption() throws RecognitionException {
30973 		AddSecondaryOptionContext _localctx = new AddSecondaryOptionContext(_ctx, getState());
30974 		enterRule(_localctx, 602, RULE_addSecondaryOption);
30975 		int _la;
30976 		try {
30977 			setState(4366);
30978 			_errHandler.sync(this);
30979 			switch (_input.LA(1)) {
30980 			case ALLOW_CONNECTIONS:
30981 				enterOuterAlt(_localctx, 1);
30982 				{
30983 				setState(4354);
30984 				match(ALLOW_CONNECTIONS);
30985 				setState(4355);
30986 				match(EQ_);
30987 				setState(4356);
30988 				_la = _input.LA(1);
30989 				if ( !(_la==ALL || _la==NO) ) {
30990 				_errHandler.recoverInline(this);
30991 				}
30992 				else {
30993 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30994 					_errHandler.reportMatch(this);
30995 					consume();
30996 				}
30997 				}
30998 				break;
30999 			case SERVICE_OBJECTIVE:
31000 				enterOuterAlt(_localctx, 2);
31001 				{
31002 				setState(4357);
31003 				match(SERVICE_OBJECTIVE);
31004 				setState(4358);
31005 				match(EQ_);
31006 				setState(4364);
31007 				_errHandler.sync(this);
31008 				switch (_input.LA(1)) {
31009 				case ELASTIC_POOL:
31010 				case STRING_:
31011 					{
31012 					setState(4359);
31013 					serviceObjective();
31014 					}
31015 					break;
31016 				case DATABASE_NAME:
31017 					{
31018 					setState(4360);
31019 					match(DATABASE_NAME);
31020 					setState(4361);
31021 					match(EQ_);
31022 					setState(4362);
31023 					databaseName();
31024 					}
31025 					break;
31026 				case GEO:
31027 				case NAMED:
31028 					{
31029 					setState(4363);
31030 					((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = _input.LT(1);
31031 					_la = _input.LA(1);
31032 					if ( !(_la==GEO || _la==NAMED) ) {
31033 						((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = (Token)_errHandler.recoverInline(this);
31034 					}
31035 					else {
31036 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31037 						_errHandler.reportMatch(this);
31038 						consume();
31039 					}
31040 					}
31041 					break;
31042 				default:
31043 					throw new NoViableAltException(this);
31044 				}
31045 				}
31046 				break;
31047 			default:
31048 				throw new NoViableAltException(this);
31049 			}
31050 		}
31051 		catch (RecognitionException re) {
31052 			_localctx.exception = re;
31053 			_errHandler.reportError(this, re);
31054 			_errHandler.recover(this, re);
31055 		}
31056 		finally {
31057 			exitRule();
31058 		}
31059 		return _localctx;
31060 	}
31061 
31062 	public static class EditionOptionsContext extends ParserRuleContext {
31063 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
31064 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31065 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
31066 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
31067 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
31068 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
31069 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31070 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
31071 		public ServiceObjectiveContext serviceObjective() {
31072 			return getRuleContext(ServiceObjectiveContext.class,0);
31073 		}
31074 		public EditionOptionsContext(ParserRuleContext parent, int invokingState) {
31075 			super(parent, invokingState);
31076 		}
31077 		@Override public int getRuleIndex() { return RULE_editionOptions; }
31078 		@Override
31079 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31080 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEditionOptions(this);
31081 			else return visitor.visitChildren(this);
31082 		}
31083 	}
31084 
31085 	public final EditionOptionsContext editionOptions() throws RecognitionException {
31086 		EditionOptionsContext _localctx = new EditionOptionsContext(_ctx, getState());
31087 		enterRule(_localctx, 604, RULE_editionOptions);
31088 		int _la;
31089 		try {
31090 			setState(4381);
31091 			_errHandler.sync(this);
31092 			switch (_input.LA(1)) {
31093 			case MAXSIZE:
31094 				enterOuterAlt(_localctx, 1);
31095 				{
31096 				setState(4368);
31097 				match(MAXSIZE);
31098 				setState(4369);
31099 				match(EQ_);
31100 				setState(4370);
31101 				match(NUMBER_);
31102 				setState(4371);
31103 				_la = _input.LA(1);
31104 				if ( !(_la==MB || _la==GB) ) {
31105 				_errHandler.recoverInline(this);
31106 				}
31107 				else {
31108 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31109 					_errHandler.reportMatch(this);
31110 					consume();
31111 				}
31112 				}
31113 				break;
31114 			case EDITION:
31115 				enterOuterAlt(_localctx, 2);
31116 				{
31117 				setState(4372);
31118 				match(EDITION);
31119 				setState(4373);
31120 				match(EQ_);
31121 				setState(4374);
31122 				match(STRING_);
31123 				}
31124 				break;
31125 			case SERVICE_OBJECTIVE:
31126 				enterOuterAlt(_localctx, 3);
31127 				{
31128 				setState(4375);
31129 				match(SERVICE_OBJECTIVE);
31130 				setState(4376);
31131 				match(EQ_);
31132 				setState(4379);
31133 				_errHandler.sync(this);
31134 				switch ( getInterpreter().adaptivePredict(_input,473,_ctx) ) {
31135 				case 1:
31136 					{
31137 					setState(4377);
31138 					match(STRING_);
31139 					}
31140 					break;
31141 				case 2:
31142 					{
31143 					setState(4378);
31144 					serviceObjective();
31145 					}
31146 					break;
31147 				}
31148 				}
31149 				break;
31150 			default:
31151 				throw new NoViableAltException(this);
31152 			}
31153 		}
31154 		catch (RecognitionException re) {
31155 			_localctx.exception = re;
31156 			_errHandler.reportError(this, re);
31157 			_errHandler.recover(this, re);
31158 		}
31159 		finally {
31160 			exitRule();
31161 		}
31162 		return _localctx;
31163 	}
31164 
31165 	public static class ServiceObjectiveContext extends ParserRuleContext {
31166 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31167 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
31168 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31169 		public IgnoredIdentifierContext ignoredIdentifier() {
31170 			return getRuleContext(IgnoredIdentifierContext.class,0);
31171 		}
31172 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31173 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31174 		public ServiceObjectiveContext(ParserRuleContext parent, int invokingState) {
31175 			super(parent, invokingState);
31176 		}
31177 		@Override public int getRuleIndex() { return RULE_serviceObjective; }
31178 		@Override
31179 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31180 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceObjective(this);
31181 			else return visitor.visitChildren(this);
31182 		}
31183 	}
31184 
31185 	public final ServiceObjectiveContext serviceObjective() throws RecognitionException {
31186 		ServiceObjectiveContext _localctx = new ServiceObjectiveContext(_ctx, getState());
31187 		enterRule(_localctx, 606, RULE_serviceObjective);
31188 		try {
31189 			setState(4391);
31190 			_errHandler.sync(this);
31191 			switch (_input.LA(1)) {
31192 			case STRING_:
31193 				enterOuterAlt(_localctx, 1);
31194 				{
31195 				setState(4383);
31196 				match(STRING_);
31197 				}
31198 				break;
31199 			case ELASTIC_POOL:
31200 				enterOuterAlt(_localctx, 2);
31201 				{
31202 				setState(4384);
31203 				match(ELASTIC_POOL);
31204 				setState(4385);
31205 				match(LP_);
31206 				setState(4386);
31207 				ignoredIdentifier();
31208 				setState(4387);
31209 				match(EQ_);
31210 				setState(4388);
31211 				match(STRING_);
31212 				setState(4389);
31213 				match(RP_);
31214 				}
31215 				break;
31216 			default:
31217 				throw new NoViableAltException(this);
31218 			}
31219 		}
31220 		catch (RecognitionException re) {
31221 			_localctx.exception = re;
31222 			_errHandler.reportError(this, re);
31223 			_errHandler.recover(this, re);
31224 		}
31225 		finally {
31226 			exitRule();
31227 		}
31228 		return _localctx;
31229 	}
31230 
31231 	public static class AlterDatabaseOptionSpecContext extends ParserRuleContext {
31232 		public AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() {
31233 			return getRuleContext(AcceleratedDatabaseRecoveryContext.class,0);
31234 		}
31235 		public AutoOptionContext autoOption() {
31236 			return getRuleContext(AutoOptionContext.class,0);
31237 		}
31238 		public AutomaticTuningOptionContext automaticTuningOption() {
31239 			return getRuleContext(AutomaticTuningOptionContext.class,0);
31240 		}
31241 		public ChangeTrackingOptionContext changeTrackingOption() {
31242 			return getRuleContext(ChangeTrackingOptionContext.class,0);
31243 		}
31244 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
31245 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31246 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
31247 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
31248 		public CursorOptionContext cursorOption() {
31249 			return getRuleContext(CursorOptionContext.class,0);
31250 		}
31251 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
31252 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31253 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31254 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
31255 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
31256 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
31257 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
31258 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
31259 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
31260 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
31261 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
31262 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
31263 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
31264 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
31265 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
31266 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
31267 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
31268 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
31269 		public ExternalAccessOptionContext externalAccessOption() {
31270 			return getRuleContext(ExternalAccessOptionContext.class,0);
31271 		}
31272 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
31273 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31274 		public FileStreamOptionContext fileStreamOption() {
31275 			return getRuleContext(FileStreamOptionContext.class,0);
31276 		}
31277 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31278 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
31279 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
31280 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
31281 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
31282 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
31283 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
31284 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
31285 		public QueryStoreOptionsContext queryStoreOptions() {
31286 			return getRuleContext(QueryStoreOptionsContext.class,0);
31287 		}
31288 		public RecoveryOptionContext recoveryOption() {
31289 			return getRuleContext(RecoveryOptionContext.class,0);
31290 		}
31291 		public ServiceBrokerOptionContext serviceBrokerOption() {
31292 			return getRuleContext(ServiceBrokerOptionContext.class,0);
31293 		}
31294 		public SnapshotOptionContext snapshotOption() {
31295 			return getRuleContext(SnapshotOptionContext.class,0);
31296 		}
31297 		public SqlOptionContext sqlOption() {
31298 			return getRuleContext(SqlOptionContext.class,0);
31299 		}
31300 		public TargetRecoveryTimeOptionContext targetRecoveryTimeOption() {
31301 			return getRuleContext(TargetRecoveryTimeOptionContext.class,0);
31302 		}
31303 		public TerminationContext termination() {
31304 			return getRuleContext(TerminationContext.class,0);
31305 		}
31306 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
31307 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
31308 		public AlterDatabaseOptionSpecContext(ParserRuleContext parent, int invokingState) {
31309 			super(parent, invokingState);
31310 		}
31311 		@Override public int getRuleIndex() { return RULE_alterDatabaseOptionSpec; }
31312 		@Override
31313 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31314 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseOptionSpec(this);
31315 			else return visitor.visitChildren(this);
31316 		}
31317 	}
31318 
31319 	public final AlterDatabaseOptionSpecContext alterDatabaseOptionSpec() throws RecognitionException {
31320 		AlterDatabaseOptionSpecContext _localctx = new AlterDatabaseOptionSpecContext(_ctx, getState());
31321 		enterRule(_localctx, 608, RULE_alterDatabaseOptionSpec);
31322 		int _la;
31323 		try {
31324 			setState(4436);
31325 			_errHandler.sync(this);
31326 			switch (_input.LA(1)) {
31327 			case ACCELERATED_DATABASE_RECOVERY:
31328 				enterOuterAlt(_localctx, 1);
31329 				{
31330 				setState(4393);
31331 				acceleratedDatabaseRecovery();
31332 				}
31333 				break;
31334 			case AUTO_UPDATE_STATISTICS_ASYNC:
31335 			case AUTO_UPDATE_STATISTICS:
31336 			case AUTO_SHRINK:
31337 			case AUTO_CREATE_STATISTICS:
31338 			case AUTO_CLOSE:
31339 				enterOuterAlt(_localctx, 2);
31340 				{
31341 				setState(4394);
31342 				autoOption();
31343 				}
31344 				break;
31345 			case AUTOMATIC_TUNING:
31346 				enterOuterAlt(_localctx, 3);
31347 				{
31348 				setState(4395);
31349 				automaticTuningOption();
31350 				}
31351 				break;
31352 			case CHANGE_TRACKING:
31353 				enterOuterAlt(_localctx, 4);
31354 				{
31355 				setState(4396);
31356 				changeTrackingOption();
31357 				}
31358 				break;
31359 			case CONTAINMENT:
31360 				enterOuterAlt(_localctx, 5);
31361 				{
31362 				setState(4397);
31363 				match(CONTAINMENT);
31364 				setState(4398);
31365 				match(EQ_);
31366 				setState(4399);
31367 				_la = _input.LA(1);
31368 				if ( !(_la==NONE || _la==PARTIAL) ) {
31369 				_errHandler.recoverInline(this);
31370 				}
31371 				else {
31372 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31373 					_errHandler.reportMatch(this);
31374 					consume();
31375 				}
31376 				}
31377 				break;
31378 			case CURSOR_DEFAULT:
31379 			case CURSOR_CLOSE_ON_COMMIT:
31380 				enterOuterAlt(_localctx, 6);
31381 				{
31382 				setState(4400);
31383 				cursorOption();
31384 				}
31385 				break;
31386 			case DATE_CORRELATION_OPTIMIZATION:
31387 				enterOuterAlt(_localctx, 7);
31388 				{
31389 				setState(4401);
31390 				match(DATE_CORRELATION_OPTIMIZATION);
31391 				setState(4402);
31392 				_la = _input.LA(1);
31393 				if ( !(_la==ON || _la==OFF) ) {
31394 				_errHandler.recoverInline(this);
31395 				}
31396 				else {
31397 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31398 					_errHandler.reportMatch(this);
31399 					consume();
31400 				}
31401 				}
31402 				break;
31403 			case ENCRYPTION:
31404 				enterOuterAlt(_localctx, 8);
31405 				{
31406 				setState(4403);
31407 				match(ENCRYPTION);
31408 				setState(4404);
31409 				_la = _input.LA(1);
31410 				if ( !(_la==ON || _la==OFF || _la==RESUME || _la==SUSPEND) ) {
31411 				_errHandler.recoverInline(this);
31412 				}
31413 				else {
31414 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31415 					_errHandler.reportMatch(this);
31416 					consume();
31417 				}
31418 				}
31419 				break;
31420 			case ONLINE:
31421 			case OFFLINE:
31422 			case EMERGENCY:
31423 				enterOuterAlt(_localctx, 9);
31424 				{
31425 				setState(4405);
31426 				_la = _input.LA(1);
31427 				if ( !(_la==ONLINE || _la==OFFLINE || _la==EMERGENCY) ) {
31428 				_errHandler.recoverInline(this);
31429 				}
31430 				else {
31431 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31432 					_errHandler.reportMatch(this);
31433 					consume();
31434 				}
31435 				}
31436 				break;
31437 			case READ_ONLY:
31438 			case READ_WRITE:
31439 				enterOuterAlt(_localctx, 10);
31440 				{
31441 				setState(4406);
31442 				_la = _input.LA(1);
31443 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
31444 				_errHandler.recoverInline(this);
31445 				}
31446 				else {
31447 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31448 					_errHandler.reportMatch(this);
31449 					consume();
31450 				}
31451 				}
31452 				break;
31453 			case MULTI_USER:
31454 			case RESTRICTED_USER:
31455 			case SINGLE_USER:
31456 				enterOuterAlt(_localctx, 11);
31457 				{
31458 				setState(4407);
31459 				_la = _input.LA(1);
31460 				if ( !(((((_la - 614)) & ~0x3f) == 0 && ((1L << (_la - 614)) & ((1L << (MULTI_USER - 614)) | (1L << (RESTRICTED_USER - 614)) | (1L << (SINGLE_USER - 614)))) != 0)) ) {
31461 				_errHandler.recoverInline(this);
31462 				}
31463 				else {
31464 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31465 					_errHandler.reportMatch(this);
31466 					consume();
31467 				}
31468 				}
31469 				break;
31470 			case DELAYED_DURABILITY:
31471 				enterOuterAlt(_localctx, 12);
31472 				{
31473 				setState(4408);
31474 				match(DELAYED_DURABILITY);
31475 				setState(4409);
31476 				match(EQ_);
31477 				setState(4410);
31478 				_la = _input.LA(1);
31479 				if ( !(_la==FORCED || _la==DISABLED || _la==ALLOWED) ) {
31480 				_errHandler.recoverInline(this);
31481 				}
31482 				else {
31483 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31484 					_errHandler.reportMatch(this);
31485 					consume();
31486 				}
31487 				}
31488 				break;
31489 			case DB_CHAINING:
31490 			case TRUSTWORTHY:
31491 			case DEFAULT_FULLTEXT_LANGUAGE:
31492 			case DEFAULT_LANGUAGE:
31493 			case NESTED_TRIGGERS:
31494 			case TRANSFORM_NOISE_WORDS:
31495 			case TWO_DIGIT_YEAR_CUTOFF:
31496 				enterOuterAlt(_localctx, 13);
31497 				{
31498 				setState(4411);
31499 				externalAccessOption();
31500 				}
31501 				break;
31502 			case FILESTREAM:
31503 				enterOuterAlt(_localctx, 14);
31504 				{
31505 				setState(4412);
31506 				match(FILESTREAM);
31507 				setState(4413);
31508 				match(LP_);
31509 				setState(4414);
31510 				fileStreamOption();
31511 				setState(4415);
31512 				match(RP_);
31513 				}
31514 				break;
31515 			case ALTER:
31516 				enterOuterAlt(_localctx, 15);
31517 				{
31518 				setState(4417);
31519 				match(ALTER);
31520 				setState(4418);
31521 				match(DATABASE);
31522 				setState(4419);
31523 				match(SET);
31524 				setState(4420);
31525 				match(HADR);
31526 				}
31527 				break;
31528 			case MIXED_PAGE_ALLOCATION:
31529 				enterOuterAlt(_localctx, 16);
31530 				{
31531 				setState(4421);
31532 				match(MIXED_PAGE_ALLOCATION);
31533 				setState(4422);
31534 				_la = _input.LA(1);
31535 				if ( !(_la==ON || _la==OFF) ) {
31536 				_errHandler.recoverInline(this);
31537 				}
31538 				else {
31539 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31540 					_errHandler.reportMatch(this);
31541 					consume();
31542 				}
31543 				}
31544 				break;
31545 			case PARAMETERIZATION:
31546 				enterOuterAlt(_localctx, 17);
31547 				{
31548 				setState(4423);
31549 				match(PARAMETERIZATION);
31550 				setState(4424);
31551 				_la = _input.LA(1);
31552 				if ( !(_la==SIMPLE || _la==FORCED) ) {
31553 				_errHandler.recoverInline(this);
31554 				}
31555 				else {
31556 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31557 					_errHandler.reportMatch(this);
31558 					consume();
31559 				}
31560 				}
31561 				break;
31562 			case QUERY_STORE:
31563 				enterOuterAlt(_localctx, 18);
31564 				{
31565 				setState(4425);
31566 				queryStoreOptions();
31567 				}
31568 				break;
31569 			case PAGE_VERIFY:
31570 			case TORN_PAGE_DETECTION:
31571 			case RECOVERY:
31572 				enterOuterAlt(_localctx, 19);
31573 				{
31574 				setState(4426);
31575 				recoveryOption();
31576 				}
31577 				break;
31578 			case HONOR_BROKER_PRIORITY:
31579 			case ERROR_BROKER_CONVERSATIONS:
31580 			case NEW_BROKER:
31581 			case DISABLE_BROKER:
31582 			case ENABLE_BROKER:
31583 				enterOuterAlt(_localctx, 20);
31584 				{
31585 				setState(4427);
31586 				serviceBrokerOption();
31587 				}
31588 				break;
31589 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
31590 			case READ_COMMITTED_SNAPSHOT:
31591 			case ALLOW_SNAPSHOT_ISOLATION:
31592 				enterOuterAlt(_localctx, 21);
31593 				{
31594 				setState(4428);
31595 				snapshotOption();
31596 				}
31597 				break;
31598 			case RECURSIVE_TRIGGERS:
31599 			case QUOTED_IDENTIFIER:
31600 			case NUMERIC_ROUNDABORT:
31601 			case CONCAT_NULL_YIELDS_NULL:
31602 			case COMPATIBILITY_LEVEL:
31603 			case ARITHABORT:
31604 			case ANSI_WARNINGS:
31605 			case ANSI_PADDING:
31606 			case ANSI_NULLS:
31607 			case ANSI_NULL_DEFAULT:
31608 				enterOuterAlt(_localctx, 22);
31609 				{
31610 				setState(4429);
31611 				sqlOption();
31612 				}
31613 				break;
31614 			case TARGET_RECOVERY_TIME:
31615 				enterOuterAlt(_localctx, 23);
31616 				{
31617 				setState(4430);
31618 				targetRecoveryTimeOption();
31619 				}
31620 				break;
31621 			case ROLLBACK:
31622 			case NO_WAIT:
31623 				enterOuterAlt(_localctx, 24);
31624 				{
31625 				setState(4431);
31626 				termination();
31627 				}
31628 				break;
31629 			case TEMPORAL_HISTORY_RETENTION:
31630 				enterOuterAlt(_localctx, 25);
31631 				{
31632 				setState(4432);
31633 				match(TEMPORAL_HISTORY_RETENTION);
31634 				setState(4433);
31635 				_la = _input.LA(1);
31636 				if ( !(_la==ON || _la==OFF) ) {
31637 				_errHandler.recoverInline(this);
31638 				}
31639 				else {
31640 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31641 					_errHandler.reportMatch(this);
31642 					consume();
31643 				}
31644 				}
31645 				break;
31646 			case DATA_RETENTION:
31647 				enterOuterAlt(_localctx, 26);
31648 				{
31649 				setState(4434);
31650 				match(DATA_RETENTION);
31651 				setState(4435);
31652 				_la = _input.LA(1);
31653 				if ( !(_la==ON || _la==OFF) ) {
31654 				_errHandler.recoverInline(this);
31655 				}
31656 				else {
31657 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31658 					_errHandler.reportMatch(this);
31659 					consume();
31660 				}
31661 				}
31662 				break;
31663 			default:
31664 				throw new NoViableAltException(this);
31665 			}
31666 		}
31667 		catch (RecognitionException re) {
31668 			_localctx.exception = re;
31669 			_errHandler.reportError(this, re);
31670 			_errHandler.recover(this, re);
31671 		}
31672 		finally {
31673 			exitRule();
31674 		}
31675 		return _localctx;
31676 	}
31677 
31678 	public static class FileAndFilegroupOptionsContext extends ParserRuleContext {
31679 		public AddOrModifyFilesContext addOrModifyFiles() {
31680 			return getRuleContext(AddOrModifyFilesContext.class,0);
31681 		}
31682 		public FileSpecContext fileSpec() {
31683 			return getRuleContext(FileSpecContext.class,0);
31684 		}
31685 		public AddOrModifyFilegroupsContext addOrModifyFilegroups() {
31686 			return getRuleContext(AddOrModifyFilegroupsContext.class,0);
31687 		}
31688 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
31689 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
31690 		}
31691 		public FileAndFilegroupOptionsContext(ParserRuleContext parent, int invokingState) {
31692 			super(parent, invokingState);
31693 		}
31694 		@Override public int getRuleIndex() { return RULE_fileAndFilegroupOptions; }
31695 		@Override
31696 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31697 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileAndFilegroupOptions(this);
31698 			else return visitor.visitChildren(this);
31699 		}
31700 	}
31701 
31702 	public final FileAndFilegroupOptionsContext fileAndFilegroupOptions() throws RecognitionException {
31703 		FileAndFilegroupOptionsContext _localctx = new FileAndFilegroupOptionsContext(_ctx, getState());
31704 		enterRule(_localctx, 610, RULE_fileAndFilegroupOptions);
31705 		try {
31706 			setState(4442);
31707 			_errHandler.sync(this);
31708 			switch ( getInterpreter().adaptivePredict(_input,477,_ctx) ) {
31709 			case 1:
31710 				enterOuterAlt(_localctx, 1);
31711 				{
31712 				setState(4438);
31713 				addOrModifyFiles();
31714 				}
31715 				break;
31716 			case 2:
31717 				enterOuterAlt(_localctx, 2);
31718 				{
31719 				setState(4439);
31720 				fileSpec();
31721 				}
31722 				break;
31723 			case 3:
31724 				enterOuterAlt(_localctx, 3);
31725 				{
31726 				setState(4440);
31727 				addOrModifyFilegroups();
31728 				}
31729 				break;
31730 			case 4:
31731 				enterOuterAlt(_localctx, 4);
31732 				{
31733 				setState(4441);
31734 				filegroupUpdatabilityOption();
31735 				}
31736 				break;
31737 			}
31738 		}
31739 		catch (RecognitionException re) {
31740 			_localctx.exception = re;
31741 			_errHandler.reportError(this, re);
31742 			_errHandler.recover(this, re);
31743 		}
31744 		finally {
31745 			exitRule();
31746 		}
31747 		return _localctx;
31748 	}
31749 
31750 	public static class AddOrModifyFilegroupsContext extends ParserRuleContext {
31751 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
31752 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
31753 		public IgnoredIdentifierContext ignoredIdentifier() {
31754 			return getRuleContext(IgnoredIdentifierContext.class,0);
31755 		}
31756 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
31757 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
31758 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
31759 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
31760 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
31761 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
31762 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
31763 		}
31764 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
31765 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
31766 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31767 		public TerminalNode AUTOGROW_SINGLE_FILE() { return getToken(SQLServerStatementParser.AUTOGROW_SINGLE_FILE, 0); }
31768 		public TerminalNode AUTOGROW_ALL_FILES() { return getToken(SQLServerStatementParser.AUTOGROW_ALL_FILES, 0); }
31769 		public AddOrModifyFilegroupsContext(ParserRuleContext parent, int invokingState) {
31770 			super(parent, invokingState);
31771 		}
31772 		@Override public int getRuleIndex() { return RULE_addOrModifyFilegroups; }
31773 		@Override
31774 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31775 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFilegroups(this);
31776 			else return visitor.visitChildren(this);
31777 		}
31778 	}
31779 
31780 	public final AddOrModifyFilegroupsContext addOrModifyFilegroups() throws RecognitionException {
31781 		AddOrModifyFilegroupsContext _localctx = new AddOrModifyFilegroupsContext(_ctx, getState());
31782 		enterRule(_localctx, 612, RULE_addOrModifyFilegroups);
31783 		int _la;
31784 		try {
31785 			setState(4466);
31786 			_errHandler.sync(this);
31787 			switch (_input.LA(1)) {
31788 			case ADD:
31789 				enterOuterAlt(_localctx, 1);
31790 				{
31791 				setState(4444);
31792 				match(ADD);
31793 				setState(4445);
31794 				match(FILEGROUP);
31795 				setState(4446);
31796 				ignoredIdentifier();
31797 				setState(4451);
31798 				_errHandler.sync(this);
31799 				switch ( getInterpreter().adaptivePredict(_input,478,_ctx) ) {
31800 				case 1:
31801 					{
31802 					setState(4447);
31803 					match(CONTAINS);
31804 					setState(4448);
31805 					match(FILESTREAM);
31806 					}
31807 					break;
31808 				case 2:
31809 					{
31810 					setState(4449);
31811 					match(CONTAINS);
31812 					setState(4450);
31813 					match(MEMORY_OPTIMIZED_DATA);
31814 					}
31815 					break;
31816 				}
31817 				}
31818 				break;
31819 			case REMOVE:
31820 				enterOuterAlt(_localctx, 2);
31821 				{
31822 				setState(4453);
31823 				match(REMOVE);
31824 				setState(4454);
31825 				match(FILEGROUP);
31826 				setState(4455);
31827 				ignoredIdentifier();
31828 				}
31829 				break;
31830 			case MODIFY:
31831 				enterOuterAlt(_localctx, 3);
31832 				{
31833 				setState(4456);
31834 				match(MODIFY);
31835 				setState(4457);
31836 				match(FILEGROUP);
31837 				setState(4458);
31838 				ignoredIdentifier();
31839 				setState(4459);
31840 				filegroupUpdatabilityOption();
31841 				}
31842 				break;
31843 			case DEFAULT:
31844 				enterOuterAlt(_localctx, 4);
31845 				{
31846 				setState(4461);
31847 				match(DEFAULT);
31848 				}
31849 				break;
31850 			case NAME:
31851 				enterOuterAlt(_localctx, 5);
31852 				{
31853 				setState(4462);
31854 				match(NAME);
31855 				setState(4463);
31856 				match(EQ_);
31857 				setState(4464);
31858 				ignoredIdentifier();
31859 				}
31860 				break;
31861 			case AUTOGROW_SINGLE_FILE:
31862 			case AUTOGROW_ALL_FILES:
31863 				enterOuterAlt(_localctx, 6);
31864 				{
31865 				setState(4465);
31866 				_la = _input.LA(1);
31867 				if ( !(_la==AUTOGROW_SINGLE_FILE || _la==AUTOGROW_ALL_FILES) ) {
31868 				_errHandler.recoverInline(this);
31869 				}
31870 				else {
31871 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31872 					_errHandler.reportMatch(this);
31873 					consume();
31874 				}
31875 				}
31876 				break;
31877 			default:
31878 				throw new NoViableAltException(this);
31879 			}
31880 		}
31881 		catch (RecognitionException re) {
31882 			_localctx.exception = re;
31883 			_errHandler.reportError(this, re);
31884 			_errHandler.recover(this, re);
31885 		}
31886 		finally {
31887 			exitRule();
31888 		}
31889 		return _localctx;
31890 	}
31891 
31892 	public static class FilegroupUpdatabilityOptionContext extends ParserRuleContext {
31893 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
31894 		public TerminalNode READWRITE() { return getToken(SQLServerStatementParser.READWRITE, 0); }
31895 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
31896 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
31897 		public FilegroupUpdatabilityOptionContext(ParserRuleContext parent, int invokingState) {
31898 			super(parent, invokingState);
31899 		}
31900 		@Override public int getRuleIndex() { return RULE_filegroupUpdatabilityOption; }
31901 		@Override
31902 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31903 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilegroupUpdatabilityOption(this);
31904 			else return visitor.visitChildren(this);
31905 		}
31906 	}
31907 
31908 	public final FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() throws RecognitionException {
31909 		FilegroupUpdatabilityOptionContext _localctx = new FilegroupUpdatabilityOptionContext(_ctx, getState());
31910 		enterRule(_localctx, 614, RULE_filegroupUpdatabilityOption);
31911 		int _la;
31912 		try {
31913 			setState(4470);
31914 			_errHandler.sync(this);
31915 			switch (_input.LA(1)) {
31916 			case READONLY:
31917 			case READWRITE:
31918 				enterOuterAlt(_localctx, 1);
31919 				{
31920 				setState(4468);
31921 				_la = _input.LA(1);
31922 				if ( !(_la==READONLY || _la==READWRITE) ) {
31923 				_errHandler.recoverInline(this);
31924 				}
31925 				else {
31926 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31927 					_errHandler.reportMatch(this);
31928 					consume();
31929 				}
31930 				}
31931 				break;
31932 			case READ_ONLY:
31933 			case READ_WRITE:
31934 				enterOuterAlt(_localctx, 2);
31935 				{
31936 				setState(4469);
31937 				_la = _input.LA(1);
31938 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
31939 				_errHandler.recoverInline(this);
31940 				}
31941 				else {
31942 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31943 					_errHandler.reportMatch(this);
31944 					consume();
31945 				}
31946 				}
31947 				break;
31948 			default:
31949 				throw new NoViableAltException(this);
31950 			}
31951 		}
31952 		catch (RecognitionException re) {
31953 			_localctx.exception = re;
31954 			_errHandler.reportError(this, re);
31955 			_errHandler.recover(this, re);
31956 		}
31957 		finally {
31958 			exitRule();
31959 		}
31960 		return _localctx;
31961 	}
31962 
31963 	public static class AddOrModifyFilesContext extends ParserRuleContext {
31964 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
31965 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
31966 		public List<FileSpecContext> fileSpec() {
31967 			return getRuleContexts(FileSpecContext.class);
31968 		}
31969 		public FileSpecContext fileSpec(int i) {
31970 			return getRuleContext(FileSpecContext.class,i);
31971 		}
31972 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
31973 		public TerminalNode COMMA_(int i) {
31974 			return getToken(SQLServerStatementParser.COMMA_, i);
31975 		}
31976 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
31977 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
31978 		public IgnoredIdentifierContext ignoredIdentifier() {
31979 			return getRuleContext(IgnoredIdentifierContext.class,0);
31980 		}
31981 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
31982 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
31983 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31984 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
31985 		public AddOrModifyFilesContext(ParserRuleContext parent, int invokingState) {
31986 			super(parent, invokingState);
31987 		}
31988 		@Override public int getRuleIndex() { return RULE_addOrModifyFiles; }
31989 		@Override
31990 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31991 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFiles(this);
31992 			else return visitor.visitChildren(this);
31993 		}
31994 	}
31995 
31996 	public final AddOrModifyFilesContext addOrModifyFiles() throws RecognitionException {
31997 		AddOrModifyFilesContext _localctx = new AddOrModifyFilesContext(_ctx, getState());
31998 		enterRule(_localctx, 616, RULE_addOrModifyFiles);
31999 		int _la;
32000 		try {
32001 			setState(4504);
32002 			_errHandler.sync(this);
32003 			switch ( getInterpreter().adaptivePredict(_input,484,_ctx) ) {
32004 			case 1:
32005 				enterOuterAlt(_localctx, 1);
32006 				{
32007 				setState(4472);
32008 				match(ADD);
32009 				setState(4473);
32010 				match(FILE);
32011 				setState(4474);
32012 				fileSpec();
32013 				setState(4479);
32014 				_errHandler.sync(this);
32015 				_la = _input.LA(1);
32016 				while (_la==COMMA_) {
32017 					{
32018 					{
32019 					setState(4475);
32020 					match(COMMA_);
32021 					setState(4476);
32022 					fileSpec();
32023 					}
32024 					}
32025 					setState(4481);
32026 					_errHandler.sync(this);
32027 					_la = _input.LA(1);
32028 				}
32029 				setState(4485);
32030 				_errHandler.sync(this);
32031 				_la = _input.LA(1);
32032 				if (_la==TO) {
32033 					{
32034 					setState(4482);
32035 					match(TO);
32036 					setState(4483);
32037 					match(FILEGROUP);
32038 					setState(4484);
32039 					ignoredIdentifier();
32040 					}
32041 				}
32042 
32043 				}
32044 				break;
32045 			case 2:
32046 				enterOuterAlt(_localctx, 2);
32047 				{
32048 				setState(4487);
32049 				match(ADD);
32050 				setState(4488);
32051 				match(LOG);
32052 				setState(4489);
32053 				match(FILE);
32054 				setState(4490);
32055 				fileSpec();
32056 				setState(4495);
32057 				_errHandler.sync(this);
32058 				_la = _input.LA(1);
32059 				while (_la==COMMA_) {
32060 					{
32061 					{
32062 					setState(4491);
32063 					match(COMMA_);
32064 					setState(4492);
32065 					fileSpec();
32066 					}
32067 					}
32068 					setState(4497);
32069 					_errHandler.sync(this);
32070 					_la = _input.LA(1);
32071 				}
32072 				}
32073 				break;
32074 			case 3:
32075 				enterOuterAlt(_localctx, 3);
32076 				{
32077 				setState(4498);
32078 				match(REMOVE);
32079 				setState(4499);
32080 				match(FILE);
32081 				setState(4500);
32082 				match(STRING_);
32083 				}
32084 				break;
32085 			case 4:
32086 				enterOuterAlt(_localctx, 4);
32087 				{
32088 				setState(4501);
32089 				match(MODIFY);
32090 				setState(4502);
32091 				match(FILE);
32092 				setState(4503);
32093 				fileSpec();
32094 				}
32095 				break;
32096 			}
32097 		}
32098 		catch (RecognitionException re) {
32099 			_localctx.exception = re;
32100 			_errHandler.reportError(this, re);
32101 			_errHandler.recover(this, re);
32102 		}
32103 		finally {
32104 			exitRule();
32105 		}
32106 		return _localctx;
32107 	}
32108 
32109 	public static class AcceleratedDatabaseRecoveryContext extends ParserRuleContext {
32110 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
32111 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
32112 		public TerminalNode EQ_(int i) {
32113 			return getToken(SQLServerStatementParser.EQ_, i);
32114 		}
32115 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32116 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32117 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32118 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
32119 		public IgnoredIdentifierContext ignoredIdentifier() {
32120 			return getRuleContext(IgnoredIdentifierContext.class,0);
32121 		}
32122 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32123 		public AcceleratedDatabaseRecoveryContext(ParserRuleContext parent, int invokingState) {
32124 			super(parent, invokingState);
32125 		}
32126 		@Override public int getRuleIndex() { return RULE_acceleratedDatabaseRecovery; }
32127 		@Override
32128 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32129 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAcceleratedDatabaseRecovery(this);
32130 			else return visitor.visitChildren(this);
32131 		}
32132 	}
32133 
32134 	public final AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() throws RecognitionException {
32135 		AcceleratedDatabaseRecoveryContext _localctx = new AcceleratedDatabaseRecoveryContext(_ctx, getState());
32136 		enterRule(_localctx, 618, RULE_acceleratedDatabaseRecovery);
32137 		int _la;
32138 		try {
32139 			enterOuterAlt(_localctx, 1);
32140 			{
32141 			setState(4506);
32142 			match(ACCELERATED_DATABASE_RECOVERY);
32143 			setState(4507);
32144 			match(EQ_);
32145 			setState(4508);
32146 			_la = _input.LA(1);
32147 			if ( !(_la==ON || _la==OFF) ) {
32148 			_errHandler.recoverInline(this);
32149 			}
32150 			else {
32151 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32152 				_errHandler.reportMatch(this);
32153 				consume();
32154 			}
32155 			setState(4515);
32156 			_errHandler.sync(this);
32157 			switch ( getInterpreter().adaptivePredict(_input,485,_ctx) ) {
32158 			case 1:
32159 				{
32160 				setState(4509);
32161 				match(LP_);
32162 				setState(4510);
32163 				match(PERSISTENT_VERSION_STORE_FILEGROUP);
32164 				setState(4511);
32165 				match(EQ_);
32166 				setState(4512);
32167 				ignoredIdentifier();
32168 				setState(4513);
32169 				match(RP_);
32170 				}
32171 				break;
32172 			}
32173 			}
32174 		}
32175 		catch (RecognitionException re) {
32176 			_localctx.exception = re;
32177 			_errHandler.reportError(this, re);
32178 			_errHandler.recover(this, re);
32179 		}
32180 		finally {
32181 			exitRule();
32182 		}
32183 		return _localctx;
32184 	}
32185 
32186 	public static class AutoOptionContext extends ParserRuleContext {
32187 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
32188 		public List<TerminalNode> ON() { return getTokens(SQLServerStatementParser.ON); }
32189 		public TerminalNode ON(int i) {
32190 			return getToken(SQLServerStatementParser.ON, i);
32191 		}
32192 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32193 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
32194 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32195 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
32196 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32197 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32198 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
32199 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
32200 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
32201 		public AutoOptionContext(ParserRuleContext parent, int invokingState) {
32202 			super(parent, invokingState);
32203 		}
32204 		@Override public int getRuleIndex() { return RULE_autoOption; }
32205 		@Override
32206 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32207 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutoOption(this);
32208 			else return visitor.visitChildren(this);
32209 		}
32210 	}
32211 
32212 	public final AutoOptionContext autoOption() throws RecognitionException {
32213 		AutoOptionContext _localctx = new AutoOptionContext(_ctx, getState());
32214 		enterRule(_localctx, 620, RULE_autoOption);
32215 		int _la;
32216 		try {
32217 			setState(4537);
32218 			_errHandler.sync(this);
32219 			switch (_input.LA(1)) {
32220 			case AUTO_CLOSE:
32221 				enterOuterAlt(_localctx, 1);
32222 				{
32223 				setState(4517);
32224 				match(AUTO_CLOSE);
32225 				setState(4518);
32226 				_la = _input.LA(1);
32227 				if ( !(_la==ON || _la==OFF) ) {
32228 				_errHandler.recoverInline(this);
32229 				}
32230 				else {
32231 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32232 					_errHandler.reportMatch(this);
32233 					consume();
32234 				}
32235 				}
32236 				break;
32237 			case AUTO_CREATE_STATISTICS:
32238 				enterOuterAlt(_localctx, 2);
32239 				{
32240 				setState(4519);
32241 				match(AUTO_CREATE_STATISTICS);
32242 				setState(4529);
32243 				_errHandler.sync(this);
32244 				switch (_input.LA(1)) {
32245 				case OFF:
32246 					{
32247 					setState(4520);
32248 					match(OFF);
32249 					}
32250 					break;
32251 				case ON:
32252 					{
32253 					setState(4521);
32254 					match(ON);
32255 					setState(4527);
32256 					_errHandler.sync(this);
32257 					switch ( getInterpreter().adaptivePredict(_input,486,_ctx) ) {
32258 					case 1:
32259 						{
32260 						setState(4522);
32261 						match(LP_);
32262 						setState(4523);
32263 						match(INCREMENTAL);
32264 						setState(4524);
32265 						match(EQ_);
32266 						setState(4525);
32267 						_la = _input.LA(1);
32268 						if ( !(_la==ON || _la==OFF) ) {
32269 						_errHandler.recoverInline(this);
32270 						}
32271 						else {
32272 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32273 							_errHandler.reportMatch(this);
32274 							consume();
32275 						}
32276 						setState(4526);
32277 						match(RP_);
32278 						}
32279 						break;
32280 					}
32281 					}
32282 					break;
32283 				default:
32284 					throw new NoViableAltException(this);
32285 				}
32286 				}
32287 				break;
32288 			case AUTO_SHRINK:
32289 				enterOuterAlt(_localctx, 3);
32290 				{
32291 				setState(4531);
32292 				match(AUTO_SHRINK);
32293 				setState(4532);
32294 				_la = _input.LA(1);
32295 				if ( !(_la==ON || _la==OFF) ) {
32296 				_errHandler.recoverInline(this);
32297 				}
32298 				else {
32299 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32300 					_errHandler.reportMatch(this);
32301 					consume();
32302 				}
32303 				}
32304 				break;
32305 			case AUTO_UPDATE_STATISTICS:
32306 				enterOuterAlt(_localctx, 4);
32307 				{
32308 				setState(4533);
32309 				match(AUTO_UPDATE_STATISTICS);
32310 				setState(4534);
32311 				_la = _input.LA(1);
32312 				if ( !(_la==ON || _la==OFF) ) {
32313 				_errHandler.recoverInline(this);
32314 				}
32315 				else {
32316 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32317 					_errHandler.reportMatch(this);
32318 					consume();
32319 				}
32320 				}
32321 				break;
32322 			case AUTO_UPDATE_STATISTICS_ASYNC:
32323 				enterOuterAlt(_localctx, 5);
32324 				{
32325 				setState(4535);
32326 				match(AUTO_UPDATE_STATISTICS_ASYNC);
32327 				setState(4536);
32328 				_la = _input.LA(1);
32329 				if ( !(_la==ON || _la==OFF) ) {
32330 				_errHandler.recoverInline(this);
32331 				}
32332 				else {
32333 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32334 					_errHandler.reportMatch(this);
32335 					consume();
32336 				}
32337 				}
32338 				break;
32339 			default:
32340 				throw new NoViableAltException(this);
32341 			}
32342 		}
32343 		catch (RecognitionException re) {
32344 			_localctx.exception = re;
32345 			_errHandler.reportError(this, re);
32346 			_errHandler.recover(this, re);
32347 		}
32348 		finally {
32349 			exitRule();
32350 		}
32351 		return _localctx;
32352 	}
32353 
32354 	public static class AutomaticTuningOptionContext extends ParserRuleContext {
32355 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
32356 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32357 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
32358 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32359 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32360 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32361 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32362 		public AutomaticTuningOptionContext(ParserRuleContext parent, int invokingState) {
32363 			super(parent, invokingState);
32364 		}
32365 		@Override public int getRuleIndex() { return RULE_automaticTuningOption; }
32366 		@Override
32367 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32368 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutomaticTuningOption(this);
32369 			else return visitor.visitChildren(this);
32370 		}
32371 	}
32372 
32373 	public final AutomaticTuningOptionContext automaticTuningOption() throws RecognitionException {
32374 		AutomaticTuningOptionContext _localctx = new AutomaticTuningOptionContext(_ctx, getState());
32375 		enterRule(_localctx, 622, RULE_automaticTuningOption);
32376 		int _la;
32377 		try {
32378 			enterOuterAlt(_localctx, 1);
32379 			{
32380 			setState(4539);
32381 			match(AUTOMATIC_TUNING);
32382 			setState(4540);
32383 			match(LP_);
32384 			setState(4541);
32385 			match(FORCE_LAST_GOOD_PLAN);
32386 			setState(4542);
32387 			match(EQ_);
32388 			setState(4543);
32389 			_la = _input.LA(1);
32390 			if ( !(_la==ON || _la==OFF) ) {
32391 			_errHandler.recoverInline(this);
32392 			}
32393 			else {
32394 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32395 				_errHandler.reportMatch(this);
32396 				consume();
32397 			}
32398 			setState(4544);
32399 			match(RP_);
32400 			}
32401 		}
32402 		catch (RecognitionException re) {
32403 			_localctx.exception = re;
32404 			_errHandler.reportError(this, re);
32405 			_errHandler.recover(this, re);
32406 		}
32407 		finally {
32408 			exitRule();
32409 		}
32410 		return _localctx;
32411 	}
32412 
32413 	public static class ChangeTrackingOptionContext extends ParserRuleContext {
32414 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
32415 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32416 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32417 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32418 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32419 		public List<ChangeTrackingOptionListContext> changeTrackingOptionList() {
32420 			return getRuleContexts(ChangeTrackingOptionListContext.class);
32421 		}
32422 		public ChangeTrackingOptionListContext changeTrackingOptionList(int i) {
32423 			return getRuleContext(ChangeTrackingOptionListContext.class,i);
32424 		}
32425 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32426 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32427 		public TerminalNode COMMA_(int i) {
32428 			return getToken(SQLServerStatementParser.COMMA_, i);
32429 		}
32430 		public ChangeTrackingOptionContext(ParserRuleContext parent, int invokingState) {
32431 			super(parent, invokingState);
32432 		}
32433 		@Override public int getRuleIndex() { return RULE_changeTrackingOption; }
32434 		@Override
32435 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32436 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOption(this);
32437 			else return visitor.visitChildren(this);
32438 		}
32439 	}
32440 
32441 	public final ChangeTrackingOptionContext changeTrackingOption() throws RecognitionException {
32442 		ChangeTrackingOptionContext _localctx = new ChangeTrackingOptionContext(_ctx, getState());
32443 		enterRule(_localctx, 624, RULE_changeTrackingOption);
32444 		int _la;
32445 		try {
32446 			enterOuterAlt(_localctx, 1);
32447 			{
32448 			setState(4546);
32449 			match(CHANGE_TRACKING);
32450 			setState(4566);
32451 			_errHandler.sync(this);
32452 			switch ( getInterpreter().adaptivePredict(_input,492,_ctx) ) {
32453 			case 1:
32454 				{
32455 				setState(4547);
32456 				match(EQ_);
32457 				setState(4548);
32458 				match(OFF);
32459 				}
32460 				break;
32461 			case 2:
32462 				{
32463 				setState(4551);
32464 				_errHandler.sync(this);
32465 				_la = _input.LA(1);
32466 				if (_la==EQ_) {
32467 					{
32468 					setState(4549);
32469 					match(EQ_);
32470 					setState(4550);
32471 					match(ON);
32472 					}
32473 				}
32474 
32475 				setState(4564);
32476 				_errHandler.sync(this);
32477 				switch ( getInterpreter().adaptivePredict(_input,491,_ctx) ) {
32478 				case 1:
32479 					{
32480 					setState(4553);
32481 					match(LP_);
32482 					setState(4554);
32483 					changeTrackingOptionList();
32484 					setState(4559);
32485 					_errHandler.sync(this);
32486 					_la = _input.LA(1);
32487 					while (_la==COMMA_) {
32488 						{
32489 						{
32490 						setState(4555);
32491 						match(COMMA_);
32492 						setState(4556);
32493 						changeTrackingOptionList();
32494 						}
32495 						}
32496 						setState(4561);
32497 						_errHandler.sync(this);
32498 						_la = _input.LA(1);
32499 					}
32500 					setState(4562);
32501 					match(RP_);
32502 					}
32503 					break;
32504 				}
32505 				}
32506 				break;
32507 			}
32508 			}
32509 		}
32510 		catch (RecognitionException re) {
32511 			_localctx.exception = re;
32512 			_errHandler.reportError(this, re);
32513 			_errHandler.recover(this, re);
32514 		}
32515 		finally {
32516 			exitRule();
32517 		}
32518 		return _localctx;
32519 	}
32520 
32521 	public static class ChangeTrackingOptionListContext extends ParserRuleContext {
32522 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
32523 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32524 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32525 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32526 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
32527 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32528 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
32529 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
32530 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
32531 		public ChangeTrackingOptionListContext(ParserRuleContext parent, int invokingState) {
32532 			super(parent, invokingState);
32533 		}
32534 		@Override public int getRuleIndex() { return RULE_changeTrackingOptionList; }
32535 		@Override
32536 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32537 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOptionList(this);
32538 			else return visitor.visitChildren(this);
32539 		}
32540 	}
32541 
32542 	public final ChangeTrackingOptionListContext changeTrackingOptionList() throws RecognitionException {
32543 		ChangeTrackingOptionListContext _localctx = new ChangeTrackingOptionListContext(_ctx, getState());
32544 		enterRule(_localctx, 626, RULE_changeTrackingOptionList);
32545 		int _la;
32546 		try {
32547 			setState(4575);
32548 			_errHandler.sync(this);
32549 			switch (_input.LA(1)) {
32550 			case AUTO_CLEANUP:
32551 				enterOuterAlt(_localctx, 1);
32552 				{
32553 				setState(4568);
32554 				match(AUTO_CLEANUP);
32555 				setState(4569);
32556 				match(EQ_);
32557 				setState(4570);
32558 				_la = _input.LA(1);
32559 				if ( !(_la==ON || _la==OFF) ) {
32560 				_errHandler.recoverInline(this);
32561 				}
32562 				else {
32563 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32564 					_errHandler.reportMatch(this);
32565 					consume();
32566 				}
32567 				}
32568 				break;
32569 			case CHANGE_RETENTION:
32570 				enterOuterAlt(_localctx, 2);
32571 				{
32572 				setState(4571);
32573 				match(CHANGE_RETENTION);
32574 				setState(4572);
32575 				match(EQ_);
32576 				setState(4573);
32577 				match(NUMBER_);
32578 				setState(4574);
32579 				_la = _input.LA(1);
32580 				if ( !(_la==DAYS || _la==MINUTES || _la==HOURS) ) {
32581 				_errHandler.recoverInline(this);
32582 				}
32583 				else {
32584 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32585 					_errHandler.reportMatch(this);
32586 					consume();
32587 				}
32588 				}
32589 				break;
32590 			default:
32591 				throw new NoViableAltException(this);
32592 			}
32593 		}
32594 		catch (RecognitionException re) {
32595 			_localctx.exception = re;
32596 			_errHandler.reportError(this, re);
32597 			_errHandler.recover(this, re);
32598 		}
32599 		finally {
32600 			exitRule();
32601 		}
32602 		return _localctx;
32603 	}
32604 
32605 	public static class CursorOptionContext extends ParserRuleContext {
32606 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
32607 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32608 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32609 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
32610 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
32611 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
32612 		public CursorOptionContext(ParserRuleContext parent, int invokingState) {
32613 			super(parent, invokingState);
32614 		}
32615 		@Override public int getRuleIndex() { return RULE_cursorOption; }
32616 		@Override
32617 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32618 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorOption(this);
32619 			else return visitor.visitChildren(this);
32620 		}
32621 	}
32622 
32623 	public final CursorOptionContext cursorOption() throws RecognitionException {
32624 		CursorOptionContext _localctx = new CursorOptionContext(_ctx, getState());
32625 		enterRule(_localctx, 628, RULE_cursorOption);
32626 		int _la;
32627 		try {
32628 			setState(4581);
32629 			_errHandler.sync(this);
32630 			switch (_input.LA(1)) {
32631 			case CURSOR_CLOSE_ON_COMMIT:
32632 				enterOuterAlt(_localctx, 1);
32633 				{
32634 				setState(4577);
32635 				match(CURSOR_CLOSE_ON_COMMIT);
32636 				setState(4578);
32637 				_la = _input.LA(1);
32638 				if ( !(_la==ON || _la==OFF) ) {
32639 				_errHandler.recoverInline(this);
32640 				}
32641 				else {
32642 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32643 					_errHandler.reportMatch(this);
32644 					consume();
32645 				}
32646 				}
32647 				break;
32648 			case CURSOR_DEFAULT:
32649 				enterOuterAlt(_localctx, 2);
32650 				{
32651 				setState(4579);
32652 				match(CURSOR_DEFAULT);
32653 				setState(4580);
32654 				_la = _input.LA(1);
32655 				if ( !(_la==LOCAL || _la==GLOBAL) ) {
32656 				_errHandler.recoverInline(this);
32657 				}
32658 				else {
32659 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32660 					_errHandler.reportMatch(this);
32661 					consume();
32662 				}
32663 				}
32664 				break;
32665 			default:
32666 				throw new NoViableAltException(this);
32667 			}
32668 		}
32669 		catch (RecognitionException re) {
32670 			_localctx.exception = re;
32671 			_errHandler.reportError(this, re);
32672 			_errHandler.recover(this, re);
32673 		}
32674 		finally {
32675 			exitRule();
32676 		}
32677 		return _localctx;
32678 	}
32679 
32680 	public static class ExternalAccessOptionContext extends ParserRuleContext {
32681 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
32682 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32683 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32684 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
32685 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
32686 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32687 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32688 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
32689 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
32690 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
32691 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
32692 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32693 		public ExternalAccessOptionContext(ParserRuleContext parent, int invokingState) {
32694 			super(parent, invokingState);
32695 		}
32696 		@Override public int getRuleIndex() { return RULE_externalAccessOption; }
32697 		@Override
32698 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32699 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExternalAccessOption(this);
32700 			else return visitor.visitChildren(this);
32701 		}
32702 	}
32703 
32704 	public final ExternalAccessOptionContext externalAccessOption() throws RecognitionException {
32705 		ExternalAccessOptionContext _localctx = new ExternalAccessOptionContext(_ctx, getState());
32706 		enterRule(_localctx, 630, RULE_externalAccessOption);
32707 		int _la;
32708 		try {
32709 			setState(4602);
32710 			_errHandler.sync(this);
32711 			switch (_input.LA(1)) {
32712 			case DB_CHAINING:
32713 				enterOuterAlt(_localctx, 1);
32714 				{
32715 				setState(4583);
32716 				match(DB_CHAINING);
32717 				setState(4584);
32718 				_la = _input.LA(1);
32719 				if ( !(_la==ON || _la==OFF) ) {
32720 				_errHandler.recoverInline(this);
32721 				}
32722 				else {
32723 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32724 					_errHandler.reportMatch(this);
32725 					consume();
32726 				}
32727 				}
32728 				break;
32729 			case TRUSTWORTHY:
32730 				enterOuterAlt(_localctx, 2);
32731 				{
32732 				setState(4585);
32733 				match(TRUSTWORTHY);
32734 				setState(4586);
32735 				_la = _input.LA(1);
32736 				if ( !(_la==ON || _la==OFF) ) {
32737 				_errHandler.recoverInline(this);
32738 				}
32739 				else {
32740 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32741 					_errHandler.reportMatch(this);
32742 					consume();
32743 				}
32744 				}
32745 				break;
32746 			case DEFAULT_FULLTEXT_LANGUAGE:
32747 				enterOuterAlt(_localctx, 3);
32748 				{
32749 				setState(4587);
32750 				match(DEFAULT_FULLTEXT_LANGUAGE);
32751 				setState(4588);
32752 				match(EQ_);
32753 				setState(4589);
32754 				match(STRING_);
32755 				}
32756 				break;
32757 			case DEFAULT_LANGUAGE:
32758 				enterOuterAlt(_localctx, 4);
32759 				{
32760 				setState(4590);
32761 				match(DEFAULT_LANGUAGE);
32762 				setState(4591);
32763 				match(EQ_);
32764 				setState(4592);
32765 				match(STRING_);
32766 				}
32767 				break;
32768 			case NESTED_TRIGGERS:
32769 				enterOuterAlt(_localctx, 5);
32770 				{
32771 				setState(4593);
32772 				match(NESTED_TRIGGERS);
32773 				setState(4594);
32774 				match(EQ_);
32775 				setState(4595);
32776 				_la = _input.LA(1);
32777 				if ( !(_la==ON || _la==OFF) ) {
32778 				_errHandler.recoverInline(this);
32779 				}
32780 				else {
32781 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32782 					_errHandler.reportMatch(this);
32783 					consume();
32784 				}
32785 				}
32786 				break;
32787 			case TRANSFORM_NOISE_WORDS:
32788 				enterOuterAlt(_localctx, 6);
32789 				{
32790 				setState(4596);
32791 				match(TRANSFORM_NOISE_WORDS);
32792 				setState(4597);
32793 				match(EQ_);
32794 				setState(4598);
32795 				_la = _input.LA(1);
32796 				if ( !(_la==ON || _la==OFF) ) {
32797 				_errHandler.recoverInline(this);
32798 				}
32799 				else {
32800 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32801 					_errHandler.reportMatch(this);
32802 					consume();
32803 				}
32804 				}
32805 				break;
32806 			case TWO_DIGIT_YEAR_CUTOFF:
32807 				enterOuterAlt(_localctx, 7);
32808 				{
32809 				setState(4599);
32810 				match(TWO_DIGIT_YEAR_CUTOFF);
32811 				setState(4600);
32812 				match(EQ_);
32813 				setState(4601);
32814 				match(NUMBER_);
32815 				}
32816 				break;
32817 			default:
32818 				throw new NoViableAltException(this);
32819 			}
32820 		}
32821 		catch (RecognitionException re) {
32822 			_localctx.exception = re;
32823 			_errHandler.reportError(this, re);
32824 			_errHandler.recover(this, re);
32825 		}
32826 		finally {
32827 			exitRule();
32828 		}
32829 		return _localctx;
32830 	}
32831 
32832 	public static class QueryStoreOptionsContext extends ParserRuleContext {
32833 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
32834 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32835 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32836 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32837 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32838 		public List<QueryStoreOptionListContext> queryStoreOptionList() {
32839 			return getRuleContexts(QueryStoreOptionListContext.class);
32840 		}
32841 		public QueryStoreOptionListContext queryStoreOptionList(int i) {
32842 			return getRuleContext(QueryStoreOptionListContext.class,i);
32843 		}
32844 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32845 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32846 		public TerminalNode COMMA_(int i) {
32847 			return getToken(SQLServerStatementParser.COMMA_, i);
32848 		}
32849 		public QueryStoreOptionsContext(ParserRuleContext parent, int invokingState) {
32850 			super(parent, invokingState);
32851 		}
32852 		@Override public int getRuleIndex() { return RULE_queryStoreOptions; }
32853 		@Override
32854 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32855 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptions(this);
32856 			else return visitor.visitChildren(this);
32857 		}
32858 	}
32859 
32860 	public final QueryStoreOptionsContext queryStoreOptions() throws RecognitionException {
32861 		QueryStoreOptionsContext _localctx = new QueryStoreOptionsContext(_ctx, getState());
32862 		enterRule(_localctx, 632, RULE_queryStoreOptions);
32863 		int _la;
32864 		try {
32865 			enterOuterAlt(_localctx, 1);
32866 			{
32867 			setState(4604);
32868 			match(QUERY_STORE);
32869 			setState(4624);
32870 			_errHandler.sync(this);
32871 			switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
32872 			case 1:
32873 				{
32874 				setState(4605);
32875 				match(EQ_);
32876 				setState(4606);
32877 				match(OFF);
32878 				}
32879 				break;
32880 			case 2:
32881 				{
32882 				setState(4609);
32883 				_errHandler.sync(this);
32884 				_la = _input.LA(1);
32885 				if (_la==EQ_) {
32886 					{
32887 					setState(4607);
32888 					match(EQ_);
32889 					setState(4608);
32890 					match(ON);
32891 					}
32892 				}
32893 
32894 				setState(4622);
32895 				_errHandler.sync(this);
32896 				switch ( getInterpreter().adaptivePredict(_input,498,_ctx) ) {
32897 				case 1:
32898 					{
32899 					setState(4611);
32900 					match(LP_);
32901 					setState(4612);
32902 					queryStoreOptionList();
32903 					setState(4617);
32904 					_errHandler.sync(this);
32905 					_la = _input.LA(1);
32906 					while (_la==COMMA_) {
32907 						{
32908 						{
32909 						setState(4613);
32910 						match(COMMA_);
32911 						setState(4614);
32912 						queryStoreOptionList();
32913 						}
32914 						}
32915 						setState(4619);
32916 						_errHandler.sync(this);
32917 						_la = _input.LA(1);
32918 					}
32919 					setState(4620);
32920 					match(RP_);
32921 					}
32922 					break;
32923 				}
32924 				}
32925 				break;
32926 			}
32927 			}
32928 		}
32929 		catch (RecognitionException re) {
32930 			_localctx.exception = re;
32931 			_errHandler.reportError(this, re);
32932 			_errHandler.recover(this, re);
32933 		}
32934 		finally {
32935 			exitRule();
32936 		}
32937 		return _localctx;
32938 	}
32939 
32940 	public static class QueryStoreOptionListContext extends ParserRuleContext {
32941 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
32942 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
32943 		public TerminalNode EQ_(int i) {
32944 			return getToken(SQLServerStatementParser.EQ_, i);
32945 		}
32946 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
32947 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
32948 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
32949 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32950 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
32951 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32952 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32953 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
32954 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
32955 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
32956 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
32957 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
32958 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32959 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
32960 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
32961 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
32962 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
32963 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
32964 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
32965 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32966 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
32967 		public List<QueryCapturePolicyOptionListContext> queryCapturePolicyOptionList() {
32968 			return getRuleContexts(QueryCapturePolicyOptionListContext.class);
32969 		}
32970 		public QueryCapturePolicyOptionListContext queryCapturePolicyOptionList(int i) {
32971 			return getRuleContext(QueryCapturePolicyOptionListContext.class,i);
32972 		}
32973 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32974 		public TerminalNode COMMA_(int i) {
32975 			return getToken(SQLServerStatementParser.COMMA_, i);
32976 		}
32977 		public QueryStoreOptionListContext(ParserRuleContext parent, int invokingState) {
32978 			super(parent, invokingState);
32979 		}
32980 		@Override public int getRuleIndex() { return RULE_queryStoreOptionList; }
32981 		@Override
32982 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32983 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptionList(this);
32984 			else return visitor.visitChildren(this);
32985 		}
32986 	}
32987 
32988 	public final QueryStoreOptionListContext queryStoreOptionList() throws RecognitionException {
32989 		QueryStoreOptionListContext _localctx = new QueryStoreOptionListContext(_ctx, getState());
32990 		enterRule(_localctx, 634, RULE_queryStoreOptionList);
32991 		int _la;
32992 		try {
32993 			setState(4670);
32994 			_errHandler.sync(this);
32995 			switch (_input.LA(1)) {
32996 			case OPERATION_MODE:
32997 				enterOuterAlt(_localctx, 1);
32998 				{
32999 				setState(4626);
33000 				match(OPERATION_MODE);
33001 				setState(4627);
33002 				match(EQ_);
33003 				setState(4628);
33004 				_la = _input.LA(1);
33005 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
33006 				_errHandler.recoverInline(this);
33007 				}
33008 				else {
33009 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33010 					_errHandler.reportMatch(this);
33011 					consume();
33012 				}
33013 				}
33014 				break;
33015 			case CLEANUP_POLICY:
33016 				enterOuterAlt(_localctx, 2);
33017 				{
33018 				setState(4629);
33019 				match(CLEANUP_POLICY);
33020 				setState(4630);
33021 				match(EQ_);
33022 				setState(4631);
33023 				match(LP_);
33024 				setState(4632);
33025 				match(STALE_QUERY_THRESHOLD_DAYS);
33026 				setState(4633);
33027 				match(EQ_);
33028 				setState(4634);
33029 				match(NUMBER_);
33030 				setState(4635);
33031 				match(RP_);
33032 				}
33033 				break;
33034 			case DATA_FLUSH_INTERVAL_SECONDS:
33035 				enterOuterAlt(_localctx, 3);
33036 				{
33037 				setState(4636);
33038 				match(DATA_FLUSH_INTERVAL_SECONDS);
33039 				setState(4637);
33040 				match(EQ_);
33041 				setState(4638);
33042 				match(NUMBER_);
33043 				}
33044 				break;
33045 			case MAX_STORAGE_SIZE_MB:
33046 				enterOuterAlt(_localctx, 4);
33047 				{
33048 				setState(4639);
33049 				match(MAX_STORAGE_SIZE_MB);
33050 				setState(4640);
33051 				match(EQ_);
33052 				setState(4641);
33053 				match(NUMBER_);
33054 				}
33055 				break;
33056 			case INTERVAL_LENGTH_MINUTES:
33057 				enterOuterAlt(_localctx, 5);
33058 				{
33059 				setState(4642);
33060 				match(INTERVAL_LENGTH_MINUTES);
33061 				setState(4643);
33062 				match(EQ_);
33063 				setState(4644);
33064 				match(NUMBER_);
33065 				}
33066 				break;
33067 			case SIZE_BASED_CLEANUP_MODE:
33068 				enterOuterAlt(_localctx, 6);
33069 				{
33070 				setState(4645);
33071 				match(SIZE_BASED_CLEANUP_MODE);
33072 				setState(4646);
33073 				match(EQ_);
33074 				setState(4647);
33075 				_la = _input.LA(1);
33076 				if ( !(_la==OFF || _la==AUTO) ) {
33077 				_errHandler.recoverInline(this);
33078 				}
33079 				else {
33080 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33081 					_errHandler.reportMatch(this);
33082 					consume();
33083 				}
33084 				}
33085 				break;
33086 			case QUERY_CAPTURE_MODE:
33087 				enterOuterAlt(_localctx, 7);
33088 				{
33089 				setState(4648);
33090 				match(QUERY_CAPTURE_MODE);
33091 				setState(4649);
33092 				match(EQ_);
33093 				setState(4650);
33094 				_la = _input.LA(1);
33095 				if ( !(_la==ALL || _la==AUTO || _la==NONE || _la==CUSTOM) ) {
33096 				_errHandler.recoverInline(this);
33097 				}
33098 				else {
33099 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33100 					_errHandler.reportMatch(this);
33101 					consume();
33102 				}
33103 				}
33104 				break;
33105 			case MAX_PLANS_PER_QUERY:
33106 				enterOuterAlt(_localctx, 8);
33107 				{
33108 				setState(4651);
33109 				match(MAX_PLANS_PER_QUERY);
33110 				setState(4652);
33111 				match(EQ_);
33112 				setState(4653);
33113 				match(NUMBER_);
33114 				}
33115 				break;
33116 			case WAIT_STATS_CAPTURE_MODE:
33117 				enterOuterAlt(_localctx, 9);
33118 				{
33119 				setState(4654);
33120 				match(WAIT_STATS_CAPTURE_MODE);
33121 				setState(4655);
33122 				match(EQ_);
33123 				setState(4656);
33124 				_la = _input.LA(1);
33125 				if ( !(_la==ON || _la==OFF) ) {
33126 				_errHandler.recoverInline(this);
33127 				}
33128 				else {
33129 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33130 					_errHandler.reportMatch(this);
33131 					consume();
33132 				}
33133 				}
33134 				break;
33135 			case QUERY_CAPTURE_POLICY:
33136 				enterOuterAlt(_localctx, 10);
33137 				{
33138 				setState(4657);
33139 				match(QUERY_CAPTURE_POLICY);
33140 				setState(4658);
33141 				match(EQ_);
33142 				setState(4659);
33143 				match(LP_);
33144 				setState(4660);
33145 				queryCapturePolicyOptionList();
33146 				setState(4665);
33147 				_errHandler.sync(this);
33148 				_la = _input.LA(1);
33149 				while (_la==COMMA_) {
33150 					{
33151 					{
33152 					setState(4661);
33153 					match(COMMA_);
33154 					setState(4662);
33155 					queryCapturePolicyOptionList();
33156 					}
33157 					}
33158 					setState(4667);
33159 					_errHandler.sync(this);
33160 					_la = _input.LA(1);
33161 				}
33162 				setState(4668);
33163 				match(RP_);
33164 				}
33165 				break;
33166 			default:
33167 				throw new NoViableAltException(this);
33168 			}
33169 		}
33170 		catch (RecognitionException re) {
33171 			_localctx.exception = re;
33172 			_errHandler.reportError(this, re);
33173 			_errHandler.recover(this, re);
33174 		}
33175 		finally {
33176 			exitRule();
33177 		}
33178 		return _localctx;
33179 	}
33180 
33181 	public static class QueryCapturePolicyOptionListContext extends ParserRuleContext {
33182 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
33183 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33184 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33185 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
33186 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
33187 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
33188 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
33189 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
33190 		public QueryCapturePolicyOptionListContext(ParserRuleContext parent, int invokingState) {
33191 			super(parent, invokingState);
33192 		}
33193 		@Override public int getRuleIndex() { return RULE_queryCapturePolicyOptionList; }
33194 		@Override
33195 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33196 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryCapturePolicyOptionList(this);
33197 			else return visitor.visitChildren(this);
33198 		}
33199 	}
33200 
33201 	public final QueryCapturePolicyOptionListContext queryCapturePolicyOptionList() throws RecognitionException {
33202 		QueryCapturePolicyOptionListContext _localctx = new QueryCapturePolicyOptionListContext(_ctx, getState());
33203 		enterRule(_localctx, 636, RULE_queryCapturePolicyOptionList);
33204 		int _la;
33205 		try {
33206 			setState(4685);
33207 			_errHandler.sync(this);
33208 			switch (_input.LA(1)) {
33209 			case STALE_CAPTURE_POLICY_THRESHOLD:
33210 				enterOuterAlt(_localctx, 1);
33211 				{
33212 				setState(4672);
33213 				match(STALE_CAPTURE_POLICY_THRESHOLD);
33214 				setState(4673);
33215 				match(EQ_);
33216 				setState(4674);
33217 				match(NUMBER_);
33218 				setState(4675);
33219 				_la = _input.LA(1);
33220 				if ( !(_la==DAYS || _la==HOURS) ) {
33221 				_errHandler.recoverInline(this);
33222 				}
33223 				else {
33224 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33225 					_errHandler.reportMatch(this);
33226 					consume();
33227 				}
33228 				}
33229 				break;
33230 			case EXECUTION_COUNT:
33231 				enterOuterAlt(_localctx, 2);
33232 				{
33233 				setState(4676);
33234 				match(EXECUTION_COUNT);
33235 				setState(4677);
33236 				match(EQ_);
33237 				setState(4678);
33238 				match(NUMBER_);
33239 				}
33240 				break;
33241 			case TOTAL_COMPILE_CPU_TIME_MS:
33242 				enterOuterAlt(_localctx, 3);
33243 				{
33244 				setState(4679);
33245 				match(TOTAL_COMPILE_CPU_TIME_MS);
33246 				setState(4680);
33247 				match(EQ_);
33248 				setState(4681);
33249 				match(NUMBER_);
33250 				}
33251 				break;
33252 			case TOTAL_EXECUTION_CPU_TIME_MS:
33253 				enterOuterAlt(_localctx, 4);
33254 				{
33255 				setState(4682);
33256 				match(TOTAL_EXECUTION_CPU_TIME_MS);
33257 				setState(4683);
33258 				match(EQ_);
33259 				setState(4684);
33260 				match(NUMBER_);
33261 				}
33262 				break;
33263 			default:
33264 				throw new NoViableAltException(this);
33265 			}
33266 		}
33267 		catch (RecognitionException re) {
33268 			_localctx.exception = re;
33269 			_errHandler.reportError(this, re);
33270 			_errHandler.recover(this, re);
33271 		}
33272 		finally {
33273 			exitRule();
33274 		}
33275 		return _localctx;
33276 	}
33277 
33278 	public static class RecoveryOptionContext extends ParserRuleContext {
33279 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
33280 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
33281 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
33282 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
33283 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
33284 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33285 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33286 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
33287 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
33288 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
33289 		public RecoveryOptionContext(ParserRuleContext parent, int invokingState) {
33290 			super(parent, invokingState);
33291 		}
33292 		@Override public int getRuleIndex() { return RULE_recoveryOption; }
33293 		@Override
33294 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33295 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRecoveryOption(this);
33296 			else return visitor.visitChildren(this);
33297 		}
33298 	}
33299 
33300 	public final RecoveryOptionContext recoveryOption() throws RecognitionException {
33301 		RecoveryOptionContext _localctx = new RecoveryOptionContext(_ctx, getState());
33302 		enterRule(_localctx, 638, RULE_recoveryOption);
33303 		int _la;
33304 		try {
33305 			setState(4693);
33306 			_errHandler.sync(this);
33307 			switch (_input.LA(1)) {
33308 			case RECOVERY:
33309 				enterOuterAlt(_localctx, 1);
33310 				{
33311 				setState(4687);
33312 				match(RECOVERY);
33313 				setState(4688);
33314 				_la = _input.LA(1);
33315 				if ( !(_la==FULL || _la==SIMPLE || _la==BULK_LOGGED) ) {
33316 				_errHandler.recoverInline(this);
33317 				}
33318 				else {
33319 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33320 					_errHandler.reportMatch(this);
33321 					consume();
33322 				}
33323 				}
33324 				break;
33325 			case TORN_PAGE_DETECTION:
33326 				enterOuterAlt(_localctx, 2);
33327 				{
33328 				setState(4689);
33329 				match(TORN_PAGE_DETECTION);
33330 				setState(4690);
33331 				_la = _input.LA(1);
33332 				if ( !(_la==ON || _la==OFF) ) {
33333 				_errHandler.recoverInline(this);
33334 				}
33335 				else {
33336 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33337 					_errHandler.reportMatch(this);
33338 					consume();
33339 				}
33340 				}
33341 				break;
33342 			case PAGE_VERIFY:
33343 				enterOuterAlt(_localctx, 3);
33344 				{
33345 				setState(4691);
33346 				match(PAGE_VERIFY);
33347 				setState(4692);
33348 				_la = _input.LA(1);
33349 				if ( !(_la==NONE || _la==CHECKSUM || _la==TORN_PAGE_DETECTION) ) {
33350 				_errHandler.recoverInline(this);
33351 				}
33352 				else {
33353 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33354 					_errHandler.reportMatch(this);
33355 					consume();
33356 				}
33357 				}
33358 				break;
33359 			default:
33360 				throw new NoViableAltException(this);
33361 			}
33362 		}
33363 		catch (RecognitionException re) {
33364 			_localctx.exception = re;
33365 			_errHandler.reportError(this, re);
33366 			_errHandler.recover(this, re);
33367 		}
33368 		finally {
33369 			exitRule();
33370 		}
33371 		return _localctx;
33372 	}
33373 
33374 	public static class SqlOptionContext extends ParserRuleContext {
33375 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
33376 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33377 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33378 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
33379 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
33380 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
33381 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
33382 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
33383 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33384 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33385 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
33386 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
33387 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
33388 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
33389 		public SqlOptionContext(ParserRuleContext parent, int invokingState) {
33390 			super(parent, invokingState);
33391 		}
33392 		@Override public int getRuleIndex() { return RULE_sqlOption; }
33393 		@Override
33394 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33395 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSqlOption(this);
33396 			else return visitor.visitChildren(this);
33397 		}
33398 	}
33399 
33400 	public final SqlOptionContext sqlOption() throws RecognitionException {
33401 		SqlOptionContext _localctx = new SqlOptionContext(_ctx, getState());
33402 		enterRule(_localctx, 640, RULE_sqlOption);
33403 		int _la;
33404 		try {
33405 			setState(4716);
33406 			_errHandler.sync(this);
33407 			switch (_input.LA(1)) {
33408 			case ANSI_NULL_DEFAULT:
33409 				enterOuterAlt(_localctx, 1);
33410 				{
33411 				setState(4695);
33412 				match(ANSI_NULL_DEFAULT);
33413 				setState(4696);
33414 				_la = _input.LA(1);
33415 				if ( !(_la==ON || _la==OFF) ) {
33416 				_errHandler.recoverInline(this);
33417 				}
33418 				else {
33419 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33420 					_errHandler.reportMatch(this);
33421 					consume();
33422 				}
33423 				}
33424 				break;
33425 			case ANSI_NULLS:
33426 				enterOuterAlt(_localctx, 2);
33427 				{
33428 				setState(4697);
33429 				match(ANSI_NULLS);
33430 				setState(4698);
33431 				_la = _input.LA(1);
33432 				if ( !(_la==ON || _la==OFF) ) {
33433 				_errHandler.recoverInline(this);
33434 				}
33435 				else {
33436 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33437 					_errHandler.reportMatch(this);
33438 					consume();
33439 				}
33440 				}
33441 				break;
33442 			case ANSI_PADDING:
33443 				enterOuterAlt(_localctx, 3);
33444 				{
33445 				setState(4699);
33446 				match(ANSI_PADDING);
33447 				setState(4700);
33448 				_la = _input.LA(1);
33449 				if ( !(_la==ON || _la==OFF) ) {
33450 				_errHandler.recoverInline(this);
33451 				}
33452 				else {
33453 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33454 					_errHandler.reportMatch(this);
33455 					consume();
33456 				}
33457 				}
33458 				break;
33459 			case ANSI_WARNINGS:
33460 				enterOuterAlt(_localctx, 4);
33461 				{
33462 				setState(4701);
33463 				match(ANSI_WARNINGS);
33464 				setState(4702);
33465 				_la = _input.LA(1);
33466 				if ( !(_la==ON || _la==OFF) ) {
33467 				_errHandler.recoverInline(this);
33468 				}
33469 				else {
33470 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33471 					_errHandler.reportMatch(this);
33472 					consume();
33473 				}
33474 				}
33475 				break;
33476 			case ARITHABORT:
33477 				enterOuterAlt(_localctx, 5);
33478 				{
33479 				setState(4703);
33480 				match(ARITHABORT);
33481 				setState(4704);
33482 				_la = _input.LA(1);
33483 				if ( !(_la==ON || _la==OFF) ) {
33484 				_errHandler.recoverInline(this);
33485 				}
33486 				else {
33487 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33488 					_errHandler.reportMatch(this);
33489 					consume();
33490 				}
33491 				}
33492 				break;
33493 			case COMPATIBILITY_LEVEL:
33494 				enterOuterAlt(_localctx, 6);
33495 				{
33496 				setState(4705);
33497 				match(COMPATIBILITY_LEVEL);
33498 				setState(4706);
33499 				match(EQ_);
33500 				setState(4707);
33501 				match(NUMBER_);
33502 				}
33503 				break;
33504 			case CONCAT_NULL_YIELDS_NULL:
33505 				enterOuterAlt(_localctx, 7);
33506 				{
33507 				setState(4708);
33508 				match(CONCAT_NULL_YIELDS_NULL);
33509 				setState(4709);
33510 				_la = _input.LA(1);
33511 				if ( !(_la==ON || _la==OFF) ) {
33512 				_errHandler.recoverInline(this);
33513 				}
33514 				else {
33515 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33516 					_errHandler.reportMatch(this);
33517 					consume();
33518 				}
33519 				}
33520 				break;
33521 			case NUMERIC_ROUNDABORT:
33522 				enterOuterAlt(_localctx, 8);
33523 				{
33524 				setState(4710);
33525 				match(NUMERIC_ROUNDABORT);
33526 				setState(4711);
33527 				_la = _input.LA(1);
33528 				if ( !(_la==ON || _la==OFF) ) {
33529 				_errHandler.recoverInline(this);
33530 				}
33531 				else {
33532 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33533 					_errHandler.reportMatch(this);
33534 					consume();
33535 				}
33536 				}
33537 				break;
33538 			case QUOTED_IDENTIFIER:
33539 				enterOuterAlt(_localctx, 9);
33540 				{
33541 				setState(4712);
33542 				match(QUOTED_IDENTIFIER);
33543 				setState(4713);
33544 				_la = _input.LA(1);
33545 				if ( !(_la==ON || _la==OFF) ) {
33546 				_errHandler.recoverInline(this);
33547 				}
33548 				else {
33549 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33550 					_errHandler.reportMatch(this);
33551 					consume();
33552 				}
33553 				}
33554 				break;
33555 			case RECURSIVE_TRIGGERS:
33556 				enterOuterAlt(_localctx, 10);
33557 				{
33558 				setState(4714);
33559 				match(RECURSIVE_TRIGGERS);
33560 				setState(4715);
33561 				_la = _input.LA(1);
33562 				if ( !(_la==ON || _la==OFF) ) {
33563 				_errHandler.recoverInline(this);
33564 				}
33565 				else {
33566 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33567 					_errHandler.reportMatch(this);
33568 					consume();
33569 				}
33570 				}
33571 				break;
33572 			default:
33573 				throw new NoViableAltException(this);
33574 			}
33575 		}
33576 		catch (RecognitionException re) {
33577 			_localctx.exception = re;
33578 			_errHandler.reportError(this, re);
33579 			_errHandler.recover(this, re);
33580 		}
33581 		finally {
33582 			exitRule();
33583 		}
33584 		return _localctx;
33585 	}
33586 
33587 	public static class SnapshotOptionContext extends ParserRuleContext {
33588 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
33589 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33590 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33591 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
33592 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
33593 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33594 		public SnapshotOptionContext(ParserRuleContext parent, int invokingState) {
33595 			super(parent, invokingState);
33596 		}
33597 		@Override public int getRuleIndex() { return RULE_snapshotOption; }
33598 		@Override
33599 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33600 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSnapshotOption(this);
33601 			else return visitor.visitChildren(this);
33602 		}
33603 	}
33604 
33605 	public final SnapshotOptionContext snapshotOption() throws RecognitionException {
33606 		SnapshotOptionContext _localctx = new SnapshotOptionContext(_ctx, getState());
33607 		enterRule(_localctx, 642, RULE_snapshotOption);
33608 		int _la;
33609 		try {
33610 			setState(4725);
33611 			_errHandler.sync(this);
33612 			switch (_input.LA(1)) {
33613 			case ALLOW_SNAPSHOT_ISOLATION:
33614 				enterOuterAlt(_localctx, 1);
33615 				{
33616 				setState(4718);
33617 				match(ALLOW_SNAPSHOT_ISOLATION);
33618 				setState(4719);
33619 				_la = _input.LA(1);
33620 				if ( !(_la==ON || _la==OFF) ) {
33621 				_errHandler.recoverInline(this);
33622 				}
33623 				else {
33624 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33625 					_errHandler.reportMatch(this);
33626 					consume();
33627 				}
33628 				}
33629 				break;
33630 			case READ_COMMITTED_SNAPSHOT:
33631 				enterOuterAlt(_localctx, 2);
33632 				{
33633 				setState(4720);
33634 				match(READ_COMMITTED_SNAPSHOT);
33635 				setState(4721);
33636 				_la = _input.LA(1);
33637 				if ( !(_la==ON || _la==OFF) ) {
33638 				_errHandler.recoverInline(this);
33639 				}
33640 				else {
33641 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33642 					_errHandler.reportMatch(this);
33643 					consume();
33644 				}
33645 				}
33646 				break;
33647 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
33648 				enterOuterAlt(_localctx, 3);
33649 				{
33650 				setState(4722);
33651 				match(MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT);
33652 				setState(4723);
33653 				match(EQ_);
33654 				setState(4724);
33655 				_la = _input.LA(1);
33656 				if ( !(_la==ON || _la==OFF) ) {
33657 				_errHandler.recoverInline(this);
33658 				}
33659 				else {
33660 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33661 					_errHandler.reportMatch(this);
33662 					consume();
33663 				}
33664 				}
33665 				break;
33666 			default:
33667 				throw new NoViableAltException(this);
33668 			}
33669 		}
33670 		catch (RecognitionException re) {
33671 			_localctx.exception = re;
33672 			_errHandler.reportError(this, re);
33673 			_errHandler.recover(this, re);
33674 		}
33675 		finally {
33676 			exitRule();
33677 		}
33678 		return _localctx;
33679 	}
33680 
33681 	public static class ServiceBrokerOptionContext extends ParserRuleContext {
33682 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
33683 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
33684 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
33685 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
33686 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
33687 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33688 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33689 		public ServiceBrokerOptionContext(ParserRuleContext parent, int invokingState) {
33690 			super(parent, invokingState);
33691 		}
33692 		@Override public int getRuleIndex() { return RULE_serviceBrokerOption; }
33693 		@Override
33694 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33695 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerOption(this);
33696 			else return visitor.visitChildren(this);
33697 		}
33698 	}
33699 
33700 	public final ServiceBrokerOptionContext serviceBrokerOption() throws RecognitionException {
33701 		ServiceBrokerOptionContext _localctx = new ServiceBrokerOptionContext(_ctx, getState());
33702 		enterRule(_localctx, 644, RULE_serviceBrokerOption);
33703 		int _la;
33704 		try {
33705 			setState(4733);
33706 			_errHandler.sync(this);
33707 			switch (_input.LA(1)) {
33708 			case ENABLE_BROKER:
33709 				enterOuterAlt(_localctx, 1);
33710 				{
33711 				setState(4727);
33712 				match(ENABLE_BROKER);
33713 				}
33714 				break;
33715 			case DISABLE_BROKER:
33716 				enterOuterAlt(_localctx, 2);
33717 				{
33718 				setState(4728);
33719 				match(DISABLE_BROKER);
33720 				}
33721 				break;
33722 			case NEW_BROKER:
33723 				enterOuterAlt(_localctx, 3);
33724 				{
33725 				setState(4729);
33726 				match(NEW_BROKER);
33727 				}
33728 				break;
33729 			case ERROR_BROKER_CONVERSATIONS:
33730 				enterOuterAlt(_localctx, 4);
33731 				{
33732 				setState(4730);
33733 				match(ERROR_BROKER_CONVERSATIONS);
33734 				}
33735 				break;
33736 			case HONOR_BROKER_PRIORITY:
33737 				enterOuterAlt(_localctx, 5);
33738 				{
33739 				setState(4731);
33740 				match(HONOR_BROKER_PRIORITY);
33741 				setState(4732);
33742 				_la = _input.LA(1);
33743 				if ( !(_la==ON || _la==OFF) ) {
33744 				_errHandler.recoverInline(this);
33745 				}
33746 				else {
33747 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33748 					_errHandler.reportMatch(this);
33749 					consume();
33750 				}
33751 				}
33752 				break;
33753 			default:
33754 				throw new NoViableAltException(this);
33755 			}
33756 		}
33757 		catch (RecognitionException re) {
33758 			_localctx.exception = re;
33759 			_errHandler.reportError(this, re);
33760 			_errHandler.recover(this, re);
33761 		}
33762 		finally {
33763 			exitRule();
33764 		}
33765 		return _localctx;
33766 	}
33767 
33768 	public static class TargetRecoveryTimeOptionContext extends ParserRuleContext {
33769 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
33770 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33771 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33772 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
33773 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
33774 		public TargetRecoveryTimeOptionContext(ParserRuleContext parent, int invokingState) {
33775 			super(parent, invokingState);
33776 		}
33777 		@Override public int getRuleIndex() { return RULE_targetRecoveryTimeOption; }
33778 		@Override
33779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTargetRecoveryTimeOption(this);
33781 			else return visitor.visitChildren(this);
33782 		}
33783 	}
33784 
33785 	public final TargetRecoveryTimeOptionContext targetRecoveryTimeOption() throws RecognitionException {
33786 		TargetRecoveryTimeOptionContext _localctx = new TargetRecoveryTimeOptionContext(_ctx, getState());
33787 		enterRule(_localctx, 646, RULE_targetRecoveryTimeOption);
33788 		int _la;
33789 		try {
33790 			enterOuterAlt(_localctx, 1);
33791 			{
33792 			setState(4735);
33793 			match(TARGET_RECOVERY_TIME);
33794 			setState(4736);
33795 			match(EQ_);
33796 			setState(4737);
33797 			match(NUMBER_);
33798 			setState(4738);
33799 			_la = _input.LA(1);
33800 			if ( !(_la==MINUTES || _la==SECONDS) ) {
33801 			_errHandler.recoverInline(this);
33802 			}
33803 			else {
33804 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33805 				_errHandler.reportMatch(this);
33806 				consume();
33807 			}
33808 			}
33809 		}
33810 		catch (RecognitionException re) {
33811 			_localctx.exception = re;
33812 			_errHandler.reportError(this, re);
33813 			_errHandler.recover(this, re);
33814 		}
33815 		finally {
33816 			exitRule();
33817 		}
33818 		return _localctx;
33819 	}
33820 
33821 	public static class TerminationContext extends ParserRuleContext {
33822 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
33823 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
33824 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33825 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
33826 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
33827 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
33828 		public TerminationContext(ParserRuleContext parent, int invokingState) {
33829 			super(parent, invokingState);
33830 		}
33831 		@Override public int getRuleIndex() { return RULE_termination; }
33832 		@Override
33833 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33834 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTermination(this);
33835 			else return visitor.visitChildren(this);
33836 		}
33837 	}
33838 
33839 	public final TerminationContext termination() throws RecognitionException {
33840 		TerminationContext _localctx = new TerminationContext(_ctx, getState());
33841 		enterRule(_localctx, 648, RULE_termination);
33842 		int _la;
33843 		try {
33844 			setState(4749);
33845 			_errHandler.sync(this);
33846 			switch ( getInterpreter().adaptivePredict(_input,508,_ctx) ) {
33847 			case 1:
33848 				enterOuterAlt(_localctx, 1);
33849 				{
33850 				setState(4740);
33851 				match(ROLLBACK);
33852 				setState(4741);
33853 				match(AFTER);
33854 				setState(4742);
33855 				match(NUMBER_);
33856 				setState(4744);
33857 				_errHandler.sync(this);
33858 				_la = _input.LA(1);
33859 				if (_la==SECONDS) {
33860 					{
33861 					setState(4743);
33862 					match(SECONDS);
33863 					}
33864 				}
33865 
33866 				}
33867 				break;
33868 			case 2:
33869 				enterOuterAlt(_localctx, 2);
33870 				{
33871 				setState(4746);
33872 				match(ROLLBACK);
33873 				setState(4747);
33874 				match(IMMEDIATE);
33875 				}
33876 				break;
33877 			case 3:
33878 				enterOuterAlt(_localctx, 3);
33879 				{
33880 				setState(4748);
33881 				match(NO_WAIT);
33882 				}
33883 				break;
33884 			}
33885 		}
33886 		catch (RecognitionException re) {
33887 			_localctx.exception = re;
33888 			_errHandler.reportError(this, re);
33889 			_errHandler.recover(this, re);
33890 		}
33891 		finally {
33892 			exitRule();
33893 		}
33894 		return _localctx;
33895 	}
33896 
33897 	public static class CreateServiceClauseContext extends ParserRuleContext {
33898 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33899 		public List<ContractNameContext> contractName() {
33900 			return getRuleContexts(ContractNameContext.class);
33901 		}
33902 		public ContractNameContext contractName(int i) {
33903 			return getRuleContext(ContractNameContext.class,i);
33904 		}
33905 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33906 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33907 		public TerminalNode COMMA_(int i) {
33908 			return getToken(SQLServerStatementParser.COMMA_, i);
33909 		}
33910 		public CreateServiceClauseContext(ParserRuleContext parent, int invokingState) {
33911 			super(parent, invokingState);
33912 		}
33913 		@Override public int getRuleIndex() { return RULE_createServiceClause; }
33914 		@Override
33915 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33916 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateServiceClause(this);
33917 			else return visitor.visitChildren(this);
33918 		}
33919 	}
33920 
33921 	public final CreateServiceClauseContext createServiceClause() throws RecognitionException {
33922 		CreateServiceClauseContext _localctx = new CreateServiceClauseContext(_ctx, getState());
33923 		enterRule(_localctx, 650, RULE_createServiceClause);
33924 		int _la;
33925 		try {
33926 			enterOuterAlt(_localctx, 1);
33927 			{
33928 			setState(4751);
33929 			match(LP_);
33930 			setState(4752);
33931 			contractName();
33932 			setState(4757);
33933 			_errHandler.sync(this);
33934 			_la = _input.LA(1);
33935 			while (_la==COMMA_) {
33936 				{
33937 				{
33938 				setState(4753);
33939 				match(COMMA_);
33940 				setState(4754);
33941 				contractName();
33942 				}
33943 				}
33944 				setState(4759);
33945 				_errHandler.sync(this);
33946 				_la = _input.LA(1);
33947 			}
33948 			setState(4760);
33949 			match(RP_);
33950 			}
33951 		}
33952 		catch (RecognitionException re) {
33953 			_localctx.exception = re;
33954 			_errHandler.reportError(this, re);
33955 			_errHandler.recover(this, re);
33956 		}
33957 		finally {
33958 			exitRule();
33959 		}
33960 		return _localctx;
33961 	}
33962 
33963 	public static class AlterServiceClauseContext extends ParserRuleContext {
33964 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33965 		public List<AlterServiceOptArgContext> alterServiceOptArg() {
33966 			return getRuleContexts(AlterServiceOptArgContext.class);
33967 		}
33968 		public AlterServiceOptArgContext alterServiceOptArg(int i) {
33969 			return getRuleContext(AlterServiceOptArgContext.class,i);
33970 		}
33971 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33972 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33973 		public TerminalNode COMMA_(int i) {
33974 			return getToken(SQLServerStatementParser.COMMA_, i);
33975 		}
33976 		public AlterServiceClauseContext(ParserRuleContext parent, int invokingState) {
33977 			super(parent, invokingState);
33978 		}
33979 		@Override public int getRuleIndex() { return RULE_alterServiceClause; }
33980 		@Override
33981 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33982 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceClause(this);
33983 			else return visitor.visitChildren(this);
33984 		}
33985 	}
33986 
33987 	public final AlterServiceClauseContext alterServiceClause() throws RecognitionException {
33988 		AlterServiceClauseContext _localctx = new AlterServiceClauseContext(_ctx, getState());
33989 		enterRule(_localctx, 652, RULE_alterServiceClause);
33990 		int _la;
33991 		try {
33992 			enterOuterAlt(_localctx, 1);
33993 			{
33994 			setState(4762);
33995 			match(LP_);
33996 			setState(4763);
33997 			alterServiceOptArg();
33998 			setState(4768);
33999 			_errHandler.sync(this);
34000 			_la = _input.LA(1);
34001 			while (_la==COMMA_) {
34002 				{
34003 				{
34004 				setState(4764);
34005 				match(COMMA_);
34006 				setState(4765);
34007 				alterServiceOptArg();
34008 				}
34009 				}
34010 				setState(4770);
34011 				_errHandler.sync(this);
34012 				_la = _input.LA(1);
34013 			}
34014 			setState(4771);
34015 			match(RP_);
34016 			}
34017 		}
34018 		catch (RecognitionException re) {
34019 			_localctx.exception = re;
34020 			_errHandler.reportError(this, re);
34021 			_errHandler.recover(this, re);
34022 		}
34023 		finally {
34024 			exitRule();
34025 		}
34026 		return _localctx;
34027 	}
34028 
34029 	public static class AlterServiceOptArgContext extends ParserRuleContext {
34030 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
34031 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
34032 		public ContractNameContext contractName() {
34033 			return getRuleContext(ContractNameContext.class,0);
34034 		}
34035 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
34036 		public AlterServiceOptArgContext(ParserRuleContext parent, int invokingState) {
34037 			super(parent, invokingState);
34038 		}
34039 		@Override public int getRuleIndex() { return RULE_alterServiceOptArg; }
34040 		@Override
34041 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34042 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceOptArg(this);
34043 			else return visitor.visitChildren(this);
34044 		}
34045 	}
34046 
34047 	public final AlterServiceOptArgContext alterServiceOptArg() throws RecognitionException {
34048 		AlterServiceOptArgContext _localctx = new AlterServiceOptArgContext(_ctx, getState());
34049 		enterRule(_localctx, 654, RULE_alterServiceOptArg);
34050 		try {
34051 			setState(4779);
34052 			_errHandler.sync(this);
34053 			switch (_input.LA(1)) {
34054 			case ADD:
34055 				enterOuterAlt(_localctx, 1);
34056 				{
34057 				setState(4773);
34058 				match(ADD);
34059 				setState(4774);
34060 				match(CONTRACT);
34061 				setState(4775);
34062 				contractName();
34063 				}
34064 				break;
34065 			case DROP:
34066 				enterOuterAlt(_localctx, 2);
34067 				{
34068 				setState(4776);
34069 				match(DROP);
34070 				setState(4777);
34071 				match(CONTRACT);
34072 				setState(4778);
34073 				contractName();
34074 				}
34075 				break;
34076 			default:
34077 				throw new NoViableAltException(this);
34078 			}
34079 		}
34080 		catch (RecognitionException re) {
34081 			_localctx.exception = re;
34082 			_errHandler.reportError(this, re);
34083 			_errHandler.recover(this, re);
34084 		}
34085 		finally {
34086 			exitRule();
34087 		}
34088 		return _localctx;
34089 	}
34090 
34091 	public static class SchemaNameClauseContext extends ParserRuleContext {
34092 		public SchemaNameContext schemaName() {
34093 			return getRuleContext(SchemaNameContext.class,0);
34094 		}
34095 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
34096 		public IgnoredIdentifierContext ignoredIdentifier() {
34097 			return getRuleContext(IgnoredIdentifierContext.class,0);
34098 		}
34099 		public SchemaNameClauseContext(ParserRuleContext parent, int invokingState) {
34100 			super(parent, invokingState);
34101 		}
34102 		@Override public int getRuleIndex() { return RULE_schemaNameClause; }
34103 		@Override
34104 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34105 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaNameClause(this);
34106 			else return visitor.visitChildren(this);
34107 		}
34108 	}
34109 
34110 	public final SchemaNameClauseContext schemaNameClause() throws RecognitionException {
34111 		SchemaNameClauseContext _localctx = new SchemaNameClauseContext(_ctx, getState());
34112 		enterRule(_localctx, 656, RULE_schemaNameClause);
34113 		try {
34114 			setState(4788);
34115 			_errHandler.sync(this);
34116 			switch ( getInterpreter().adaptivePredict(_input,512,_ctx) ) {
34117 			case 1:
34118 				enterOuterAlt(_localctx, 1);
34119 				{
34120 				setState(4781);
34121 				schemaName();
34122 				}
34123 				break;
34124 			case 2:
34125 				enterOuterAlt(_localctx, 2);
34126 				{
34127 				setState(4782);
34128 				match(AUTHORIZATION);
34129 				setState(4783);
34130 				ignoredIdentifier();
34131 				}
34132 				break;
34133 			case 3:
34134 				enterOuterAlt(_localctx, 3);
34135 				{
34136 				setState(4784);
34137 				schemaName();
34138 				setState(4785);
34139 				match(AUTHORIZATION);
34140 				setState(4786);
34141 				ignoredIdentifier();
34142 				}
34143 				break;
34144 			}
34145 		}
34146 		catch (RecognitionException re) {
34147 			_localctx.exception = re;
34148 			_errHandler.reportError(this, re);
34149 			_errHandler.recover(this, re);
34150 		}
34151 		finally {
34152 			exitRule();
34153 		}
34154 		return _localctx;
34155 	}
34156 
34157 	public static class SchemaElementContext extends ParserRuleContext {
34158 		public CreateTableContext createTable() {
34159 			return getRuleContext(CreateTableContext.class,0);
34160 		}
34161 		public CreateViewContext createView() {
34162 			return getRuleContext(CreateViewContext.class,0);
34163 		}
34164 		public GrantContext grant() {
34165 			return getRuleContext(GrantContext.class,0);
34166 		}
34167 		public RevokeContext revoke() {
34168 			return getRuleContext(RevokeContext.class,0);
34169 		}
34170 		public DenyContext deny() {
34171 			return getRuleContext(DenyContext.class,0);
34172 		}
34173 		public SchemaElementContext(ParserRuleContext parent, int invokingState) {
34174 			super(parent, invokingState);
34175 		}
34176 		@Override public int getRuleIndex() { return RULE_schemaElement; }
34177 		@Override
34178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaElement(this);
34180 			else return visitor.visitChildren(this);
34181 		}
34182 	}
34183 
34184 	public final SchemaElementContext schemaElement() throws RecognitionException {
34185 		SchemaElementContext _localctx = new SchemaElementContext(_ctx, getState());
34186 		enterRule(_localctx, 658, RULE_schemaElement);
34187 		try {
34188 			setState(4795);
34189 			_errHandler.sync(this);
34190 			switch ( getInterpreter().adaptivePredict(_input,513,_ctx) ) {
34191 			case 1:
34192 				enterOuterAlt(_localctx, 1);
34193 				{
34194 				setState(4790);
34195 				createTable();
34196 				}
34197 				break;
34198 			case 2:
34199 				enterOuterAlt(_localctx, 2);
34200 				{
34201 				setState(4791);
34202 				createView();
34203 				}
34204 				break;
34205 			case 3:
34206 				enterOuterAlt(_localctx, 3);
34207 				{
34208 				setState(4792);
34209 				grant();
34210 				}
34211 				break;
34212 			case 4:
34213 				enterOuterAlt(_localctx, 4);
34214 				{
34215 				setState(4793);
34216 				revoke();
34217 				}
34218 				break;
34219 			case 5:
34220 				enterOuterAlt(_localctx, 5);
34221 				{
34222 				setState(4794);
34223 				deny();
34224 				}
34225 				break;
34226 			}
34227 		}
34228 		catch (RecognitionException re) {
34229 			_localctx.exception = re;
34230 			_errHandler.reportError(this, re);
34231 			_errHandler.recover(this, re);
34232 		}
34233 		finally {
34234 			exitRule();
34235 		}
34236 		return _localctx;
34237 	}
34238 
34239 	public static class CreateTableAsSelectClauseContext extends ParserRuleContext {
34240 		public CreateTableAsSelectContext createTableAsSelect() {
34241 			return getRuleContext(CreateTableAsSelectContext.class,0);
34242 		}
34243 		public CreateRemoteTableAsSelectContext createRemoteTableAsSelect() {
34244 			return getRuleContext(CreateRemoteTableAsSelectContext.class,0);
34245 		}
34246 		public CreateTableAsSelectClauseContext(ParserRuleContext parent, int invokingState) {
34247 			super(parent, invokingState);
34248 		}
34249 		@Override public int getRuleIndex() { return RULE_createTableAsSelectClause; }
34250 		@Override
34251 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34252 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelectClause(this);
34253 			else return visitor.visitChildren(this);
34254 		}
34255 	}
34256 
34257 	public final CreateTableAsSelectClauseContext createTableAsSelectClause() throws RecognitionException {
34258 		CreateTableAsSelectClauseContext _localctx = new CreateTableAsSelectClauseContext(_ctx, getState());
34259 		enterRule(_localctx, 660, RULE_createTableAsSelectClause);
34260 		try {
34261 			setState(4799);
34262 			_errHandler.sync(this);
34263 			switch ( getInterpreter().adaptivePredict(_input,514,_ctx) ) {
34264 			case 1:
34265 				enterOuterAlt(_localctx, 1);
34266 				{
34267 				setState(4797);
34268 				createTableAsSelect();
34269 				}
34270 				break;
34271 			case 2:
34272 				enterOuterAlt(_localctx, 2);
34273 				{
34274 				setState(4798);
34275 				createRemoteTableAsSelect();
34276 				}
34277 				break;
34278 			}
34279 		}
34280 		catch (RecognitionException re) {
34281 			_localctx.exception = re;
34282 			_errHandler.reportError(this, re);
34283 			_errHandler.recover(this, re);
34284 		}
34285 		finally {
34286 			exitRule();
34287 		}
34288 		return _localctx;
34289 	}
34290 
34291 	public static class CreateTableAsSelectContext extends ParserRuleContext {
34292 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
34293 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
34294 		public TableNameContext tableName() {
34295 			return getRuleContext(TableNameContext.class,0);
34296 		}
34297 		public WithDistributionOptionContext withDistributionOption() {
34298 			return getRuleContext(WithDistributionOptionContext.class,0);
34299 		}
34300 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
34301 		public SelectContext select() {
34302 			return getRuleContext(SelectContext.class,0);
34303 		}
34304 		public OptionQueryHintClauseContext optionQueryHintClause() {
34305 			return getRuleContext(OptionQueryHintClauseContext.class,0);
34306 		}
34307 		public ColumnNamesContext columnNames() {
34308 			return getRuleContext(ColumnNamesContext.class,0);
34309 		}
34310 		public CreateTableAsSelectContext(ParserRuleContext parent, int invokingState) {
34311 			super(parent, invokingState);
34312 		}
34313 		@Override public int getRuleIndex() { return RULE_createTableAsSelect; }
34314 		@Override
34315 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34316 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelect(this);
34317 			else return visitor.visitChildren(this);
34318 		}
34319 	}
34320 
34321 	public final CreateTableAsSelectContext createTableAsSelect() throws RecognitionException {
34322 		CreateTableAsSelectContext _localctx = new CreateTableAsSelectContext(_ctx, getState());
34323 		enterRule(_localctx, 662, RULE_createTableAsSelect);
34324 		int _la;
34325 		try {
34326 			enterOuterAlt(_localctx, 1);
34327 			{
34328 			setState(4801);
34329 			match(CREATE);
34330 			setState(4802);
34331 			match(TABLE);
34332 			setState(4803);
34333 			tableName();
34334 			setState(4805);
34335 			_errHandler.sync(this);
34336 			_la = _input.LA(1);
34337 			if (_la==LP_) {
34338 				{
34339 				setState(4804);
34340 				columnNames();
34341 				}
34342 			}
34343 
34344 			setState(4807);
34345 			withDistributionOption();
34346 			setState(4808);
34347 			match(AS);
34348 			setState(4809);
34349 			select();
34350 			setState(4810);
34351 			optionQueryHintClause();
34352 			}
34353 		}
34354 		catch (RecognitionException re) {
34355 			_localctx.exception = re;
34356 			_errHandler.reportError(this, re);
34357 			_errHandler.recover(this, re);
34358 		}
34359 		finally {
34360 			exitRule();
34361 		}
34362 		return _localctx;
34363 	}
34364 
34365 	public static class CreateRemoteTableAsSelectContext extends ParserRuleContext {
34366 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
34367 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
34368 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
34369 		public TableNameContext tableName() {
34370 			return getRuleContext(TableNameContext.class,0);
34371 		}
34372 		public TerminalNode AT() { return getToken(SQLServerStatementParser.AT, 0); }
34373 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
34374 		public TerminalNode LP_(int i) {
34375 			return getToken(SQLServerStatementParser.LP_, i);
34376 		}
34377 		public StringLiteralsContext stringLiterals() {
34378 			return getRuleContext(StringLiteralsContext.class,0);
34379 		}
34380 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
34381 		public TerminalNode RP_(int i) {
34382 			return getToken(SQLServerStatementParser.RP_, i);
34383 		}
34384 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
34385 		public SelectContext select() {
34386 			return getRuleContext(SelectContext.class,0);
34387 		}
34388 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
34389 		public TerminalNode BATCH_SIZE() { return getToken(SQLServerStatementParser.BATCH_SIZE, 0); }
34390 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34391 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
34392 		public CreateRemoteTableAsSelectContext(ParserRuleContext parent, int invokingState) {
34393 			super(parent, invokingState);
34394 		}
34395 		@Override public int getRuleIndex() { return RULE_createRemoteTableAsSelect; }
34396 		@Override
34397 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34398 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRemoteTableAsSelect(this);
34399 			else return visitor.visitChildren(this);
34400 		}
34401 	}
34402 
34403 	public final CreateRemoteTableAsSelectContext createRemoteTableAsSelect() throws RecognitionException {
34404 		CreateRemoteTableAsSelectContext _localctx = new CreateRemoteTableAsSelectContext(_ctx, getState());
34405 		enterRule(_localctx, 664, RULE_createRemoteTableAsSelect);
34406 		int _la;
34407 		try {
34408 			enterOuterAlt(_localctx, 1);
34409 			{
34410 			setState(4812);
34411 			match(CREATE);
34412 			setState(4813);
34413 			match(REMOTE);
34414 			setState(4814);
34415 			match(TABLE);
34416 			setState(4815);
34417 			tableName();
34418 			setState(4816);
34419 			match(AT);
34420 			setState(4817);
34421 			match(LP_);
34422 			setState(4818);
34423 			stringLiterals();
34424 			setState(4819);
34425 			match(RP_);
34426 			setState(4826);
34427 			_errHandler.sync(this);
34428 			_la = _input.LA(1);
34429 			if (_la==WITH) {
34430 				{
34431 				setState(4820);
34432 				match(WITH);
34433 				setState(4821);
34434 				match(LP_);
34435 				setState(4822);
34436 				match(BATCH_SIZE);
34437 				setState(4823);
34438 				match(EQ_);
34439 				setState(4824);
34440 				match(INT_NUM_);
34441 				setState(4825);
34442 				match(RP_);
34443 				}
34444 			}
34445 
34446 			setState(4828);
34447 			match(AS);
34448 			setState(4829);
34449 			select();
34450 			}
34451 		}
34452 		catch (RecognitionException re) {
34453 			_localctx.exception = re;
34454 			_errHandler.reportError(this, re);
34455 			_errHandler.recover(this, re);
34456 		}
34457 		finally {
34458 			exitRule();
34459 		}
34460 		return _localctx;
34461 	}
34462 
34463 	public static class WithDistributionOptionContext extends ParserRuleContext {
34464 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
34465 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34466 		public DistributionOptionContext distributionOption() {
34467 			return getRuleContext(DistributionOptionContext.class,0);
34468 		}
34469 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34470 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34471 		public TerminalNode COMMA_(int i) {
34472 			return getToken(SQLServerStatementParser.COMMA_, i);
34473 		}
34474 		public List<TableOptionContext> tableOption() {
34475 			return getRuleContexts(TableOptionContext.class);
34476 		}
34477 		public TableOptionContext tableOption(int i) {
34478 			return getRuleContext(TableOptionContext.class,i);
34479 		}
34480 		public WithDistributionOptionContext(ParserRuleContext parent, int invokingState) {
34481 			super(parent, invokingState);
34482 		}
34483 		@Override public int getRuleIndex() { return RULE_withDistributionOption; }
34484 		@Override
34485 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34486 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithDistributionOption(this);
34487 			else return visitor.visitChildren(this);
34488 		}
34489 	}
34490 
34491 	public final WithDistributionOptionContext withDistributionOption() throws RecognitionException {
34492 		WithDistributionOptionContext _localctx = new WithDistributionOptionContext(_ctx, getState());
34493 		enterRule(_localctx, 666, RULE_withDistributionOption);
34494 		int _la;
34495 		try {
34496 			enterOuterAlt(_localctx, 1);
34497 			{
34498 			setState(4831);
34499 			match(WITH);
34500 			setState(4832);
34501 			match(LP_);
34502 			setState(4833);
34503 			distributionOption();
34504 			setState(4843);
34505 			_errHandler.sync(this);
34506 			_la = _input.LA(1);
34507 			if (_la==COMMA_) {
34508 				{
34509 				setState(4834);
34510 				match(COMMA_);
34511 				setState(4835);
34512 				tableOption();
34513 				setState(4840);
34514 				_errHandler.sync(this);
34515 				_la = _input.LA(1);
34516 				while (_la==COMMA_) {
34517 					{
34518 					{
34519 					setState(4836);
34520 					match(COMMA_);
34521 					setState(4837);
34522 					tableOption();
34523 					}
34524 					}
34525 					setState(4842);
34526 					_errHandler.sync(this);
34527 					_la = _input.LA(1);
34528 				}
34529 				}
34530 			}
34531 
34532 			setState(4845);
34533 			match(RP_);
34534 			}
34535 		}
34536 		catch (RecognitionException re) {
34537 			_localctx.exception = re;
34538 			_errHandler.reportError(this, re);
34539 			_errHandler.recover(this, re);
34540 		}
34541 		finally {
34542 			exitRule();
34543 		}
34544 		return _localctx;
34545 	}
34546 
34547 	public static class OptionQueryHintClauseContext extends ParserRuleContext {
34548 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
34549 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34550 		public List<QueryHintContext> queryHint() {
34551 			return getRuleContexts(QueryHintContext.class);
34552 		}
34553 		public QueryHintContext queryHint(int i) {
34554 			return getRuleContext(QueryHintContext.class,i);
34555 		}
34556 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34557 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34558 		public TerminalNode COMMA_(int i) {
34559 			return getToken(SQLServerStatementParser.COMMA_, i);
34560 		}
34561 		public OptionQueryHintClauseContext(ParserRuleContext parent, int invokingState) {
34562 			super(parent, invokingState);
34563 		}
34564 		@Override public int getRuleIndex() { return RULE_optionQueryHintClause; }
34565 		@Override
34566 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34567 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionQueryHintClause(this);
34568 			else return visitor.visitChildren(this);
34569 		}
34570 	}
34571 
34572 	public final OptionQueryHintClauseContext optionQueryHintClause() throws RecognitionException {
34573 		OptionQueryHintClauseContext _localctx = new OptionQueryHintClauseContext(_ctx, getState());
34574 		enterRule(_localctx, 668, RULE_optionQueryHintClause);
34575 		int _la;
34576 		try {
34577 			enterOuterAlt(_localctx, 1);
34578 			{
34579 			setState(4859);
34580 			_errHandler.sync(this);
34581 			_la = _input.LA(1);
34582 			if (_la==OPTION) {
34583 				{
34584 				setState(4847);
34585 				match(OPTION);
34586 				setState(4848);
34587 				match(LP_);
34588 				setState(4849);
34589 				queryHint();
34590 				setState(4854);
34591 				_errHandler.sync(this);
34592 				_la = _input.LA(1);
34593 				while (_la==COMMA_) {
34594 					{
34595 					{
34596 					setState(4850);
34597 					match(COMMA_);
34598 					setState(4851);
34599 					queryHint();
34600 					}
34601 					}
34602 					setState(4856);
34603 					_errHandler.sync(this);
34604 					_la = _input.LA(1);
34605 				}
34606 				setState(4857);
34607 				match(RP_);
34608 				}
34609 			}
34610 
34611 			}
34612 		}
34613 		catch (RecognitionException re) {
34614 			_localctx.exception = re;
34615 			_errHandler.reportError(this, re);
34616 			_errHandler.recover(this, re);
34617 		}
34618 		finally {
34619 			exitRule();
34620 		}
34621 		return _localctx;
34622 	}
34623 
34624 	public static class InsertContext extends ParserRuleContext {
34625 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
34626 		public TableNameContext tableName() {
34627 			return getRuleContext(TableNameContext.class,0);
34628 		}
34629 		public InsertDefaultValueContext insertDefaultValue() {
34630 			return getRuleContext(InsertDefaultValueContext.class,0);
34631 		}
34632 		public InsertValuesClauseContext insertValuesClause() {
34633 			return getRuleContext(InsertValuesClauseContext.class,0);
34634 		}
34635 		public InsertSelectClauseContext insertSelectClause() {
34636 			return getRuleContext(InsertSelectClauseContext.class,0);
34637 		}
34638 		public InsertExecClauseContext insertExecClause() {
34639 			return getRuleContext(InsertExecClauseContext.class,0);
34640 		}
34641 		public WithClauseContext withClause() {
34642 			return getRuleContext(WithClauseContext.class,0);
34643 		}
34644 		public TopContext top() {
34645 			return getRuleContext(TopContext.class,0);
34646 		}
34647 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
34648 		public AliasContext alias() {
34649 			return getRuleContext(AliasContext.class,0);
34650 		}
34651 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
34652 		public InsertContext(ParserRuleContext parent, int invokingState) {
34653 			super(parent, invokingState);
34654 		}
34655 		@Override public int getRuleIndex() { return RULE_insert; }
34656 		@Override
34657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsert(this);
34659 			else return visitor.visitChildren(this);
34660 		}
34661 	}
34662 
34663 	public final InsertContext insert() throws RecognitionException {
34664 		InsertContext _localctx = new InsertContext(_ctx, getState());
34665 		enterRule(_localctx, 670, RULE_insert);
34666 		int _la;
34667 		try {
34668 			enterOuterAlt(_localctx, 1);
34669 			{
34670 			setState(4862);
34671 			_errHandler.sync(this);
34672 			_la = _input.LA(1);
34673 			if (_la==WITH) {
34674 				{
34675 				setState(4861);
34676 				withClause();
34677 				}
34678 			}
34679 
34680 			setState(4864);
34681 			match(INSERT);
34682 			setState(4866);
34683 			_errHandler.sync(this);
34684 			switch ( getInterpreter().adaptivePredict(_input,522,_ctx) ) {
34685 			case 1:
34686 				{
34687 				setState(4865);
34688 				top();
34689 				}
34690 				break;
34691 			}
34692 			setState(4869);
34693 			_errHandler.sync(this);
34694 			_la = _input.LA(1);
34695 			if (_la==INTO) {
34696 				{
34697 				setState(4868);
34698 				match(INTO);
34699 				}
34700 			}
34701 
34702 			setState(4871);
34703 			tableName();
34704 			setState(4876);
34705 			_errHandler.sync(this);
34706 			switch ( getInterpreter().adaptivePredict(_input,525,_ctx) ) {
34707 			case 1:
34708 				{
34709 				setState(4873);
34710 				_errHandler.sync(this);
34711 				_la = _input.LA(1);
34712 				if (_la==AS) {
34713 					{
34714 					setState(4872);
34715 					match(AS);
34716 					}
34717 				}
34718 
34719 				setState(4875);
34720 				alias();
34721 				}
34722 				break;
34723 			}
34724 			setState(4882);
34725 			_errHandler.sync(this);
34726 			switch ( getInterpreter().adaptivePredict(_input,526,_ctx) ) {
34727 			case 1:
34728 				{
34729 				setState(4878);
34730 				insertDefaultValue();
34731 				}
34732 				break;
34733 			case 2:
34734 				{
34735 				setState(4879);
34736 				insertValuesClause();
34737 				}
34738 				break;
34739 			case 3:
34740 				{
34741 				setState(4880);
34742 				insertSelectClause();
34743 				}
34744 				break;
34745 			case 4:
34746 				{
34747 				setState(4881);
34748 				insertExecClause();
34749 				}
34750 				break;
34751 			}
34752 			}
34753 		}
34754 		catch (RecognitionException re) {
34755 			_localctx.exception = re;
34756 			_errHandler.reportError(this, re);
34757 			_errHandler.recover(this, re);
34758 		}
34759 		finally {
34760 			exitRule();
34761 		}
34762 		return _localctx;
34763 	}
34764 
34765 	public static class InsertDefaultValueContext extends ParserRuleContext {
34766 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
34767 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
34768 		public ColumnNamesContext columnNames() {
34769 			return getRuleContext(ColumnNamesContext.class,0);
34770 		}
34771 		public OutputClauseContext outputClause() {
34772 			return getRuleContext(OutputClauseContext.class,0);
34773 		}
34774 		public InsertDefaultValueContext(ParserRuleContext parent, int invokingState) {
34775 			super(parent, invokingState);
34776 		}
34777 		@Override public int getRuleIndex() { return RULE_insertDefaultValue; }
34778 		@Override
34779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertDefaultValue(this);
34781 			else return visitor.visitChildren(this);
34782 		}
34783 	}
34784 
34785 	public final InsertDefaultValueContext insertDefaultValue() throws RecognitionException {
34786 		InsertDefaultValueContext _localctx = new InsertDefaultValueContext(_ctx, getState());
34787 		enterRule(_localctx, 672, RULE_insertDefaultValue);
34788 		int _la;
34789 		try {
34790 			enterOuterAlt(_localctx, 1);
34791 			{
34792 			setState(4885);
34793 			_errHandler.sync(this);
34794 			_la = _input.LA(1);
34795 			if (_la==LP_) {
34796 				{
34797 				setState(4884);
34798 				columnNames();
34799 				}
34800 			}
34801 
34802 			setState(4888);
34803 			_errHandler.sync(this);
34804 			_la = _input.LA(1);
34805 			if (_la==OUTPUT) {
34806 				{
34807 				setState(4887);
34808 				outputClause();
34809 				}
34810 			}
34811 
34812 			setState(4890);
34813 			match(DEFAULT);
34814 			setState(4891);
34815 			match(VALUES);
34816 			}
34817 		}
34818 		catch (RecognitionException re) {
34819 			_localctx.exception = re;
34820 			_errHandler.reportError(this, re);
34821 			_errHandler.recover(this, re);
34822 		}
34823 		finally {
34824 			exitRule();
34825 		}
34826 		return _localctx;
34827 	}
34828 
34829 	public static class InsertValuesClauseContext extends ParserRuleContext {
34830 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
34831 		public List<AssignmentValuesContext> assignmentValues() {
34832 			return getRuleContexts(AssignmentValuesContext.class);
34833 		}
34834 		public AssignmentValuesContext assignmentValues(int i) {
34835 			return getRuleContext(AssignmentValuesContext.class,i);
34836 		}
34837 		public ColumnNamesContext columnNames() {
34838 			return getRuleContext(ColumnNamesContext.class,0);
34839 		}
34840 		public OutputClauseContext outputClause() {
34841 			return getRuleContext(OutputClauseContext.class,0);
34842 		}
34843 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34844 		public TerminalNode COMMA_(int i) {
34845 			return getToken(SQLServerStatementParser.COMMA_, i);
34846 		}
34847 		public InsertValuesClauseContext(ParserRuleContext parent, int invokingState) {
34848 			super(parent, invokingState);
34849 		}
34850 		@Override public int getRuleIndex() { return RULE_insertValuesClause; }
34851 		@Override
34852 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34853 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertValuesClause(this);
34854 			else return visitor.visitChildren(this);
34855 		}
34856 	}
34857 
34858 	public final InsertValuesClauseContext insertValuesClause() throws RecognitionException {
34859 		InsertValuesClauseContext _localctx = new InsertValuesClauseContext(_ctx, getState());
34860 		enterRule(_localctx, 674, RULE_insertValuesClause);
34861 		int _la;
34862 		try {
34863 			enterOuterAlt(_localctx, 1);
34864 			{
34865 			setState(4894);
34866 			_errHandler.sync(this);
34867 			_la = _input.LA(1);
34868 			if (_la==LP_) {
34869 				{
34870 				setState(4893);
34871 				columnNames();
34872 				}
34873 			}
34874 
34875 			setState(4897);
34876 			_errHandler.sync(this);
34877 			_la = _input.LA(1);
34878 			if (_la==OUTPUT) {
34879 				{
34880 				setState(4896);
34881 				outputClause();
34882 				}
34883 			}
34884 
34885 			setState(4899);
34886 			match(VALUES);
34887 			setState(4900);
34888 			assignmentValues();
34889 			setState(4905);
34890 			_errHandler.sync(this);
34891 			_la = _input.LA(1);
34892 			while (_la==COMMA_) {
34893 				{
34894 				{
34895 				setState(4901);
34896 				match(COMMA_);
34897 				setState(4902);
34898 				assignmentValues();
34899 				}
34900 				}
34901 				setState(4907);
34902 				_errHandler.sync(this);
34903 				_la = _input.LA(1);
34904 			}
34905 			}
34906 		}
34907 		catch (RecognitionException re) {
34908 			_localctx.exception = re;
34909 			_errHandler.reportError(this, re);
34910 			_errHandler.recover(this, re);
34911 		}
34912 		finally {
34913 			exitRule();
34914 		}
34915 		return _localctx;
34916 	}
34917 
34918 	public static class InsertSelectClauseContext extends ParserRuleContext {
34919 		public SelectContext select() {
34920 			return getRuleContext(SelectContext.class,0);
34921 		}
34922 		public ColumnNamesContext columnNames() {
34923 			return getRuleContext(ColumnNamesContext.class,0);
34924 		}
34925 		public OutputClauseContext outputClause() {
34926 			return getRuleContext(OutputClauseContext.class,0);
34927 		}
34928 		public InsertSelectClauseContext(ParserRuleContext parent, int invokingState) {
34929 			super(parent, invokingState);
34930 		}
34931 		@Override public int getRuleIndex() { return RULE_insertSelectClause; }
34932 		@Override
34933 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34934 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertSelectClause(this);
34935 			else return visitor.visitChildren(this);
34936 		}
34937 	}
34938 
34939 	public final InsertSelectClauseContext insertSelectClause() throws RecognitionException {
34940 		InsertSelectClauseContext _localctx = new InsertSelectClauseContext(_ctx, getState());
34941 		enterRule(_localctx, 676, RULE_insertSelectClause);
34942 		int _la;
34943 		try {
34944 			enterOuterAlt(_localctx, 1);
34945 			{
34946 			setState(4909);
34947 			_errHandler.sync(this);
34948 			_la = _input.LA(1);
34949 			if (_la==LP_) {
34950 				{
34951 				setState(4908);
34952 				columnNames();
34953 				}
34954 			}
34955 
34956 			setState(4912);
34957 			_errHandler.sync(this);
34958 			_la = _input.LA(1);
34959 			if (_la==OUTPUT) {
34960 				{
34961 				setState(4911);
34962 				outputClause();
34963 				}
34964 			}
34965 
34966 			setState(4914);
34967 			select();
34968 			}
34969 		}
34970 		catch (RecognitionException re) {
34971 			_localctx.exception = re;
34972 			_errHandler.reportError(this, re);
34973 			_errHandler.recover(this, re);
34974 		}
34975 		finally {
34976 			exitRule();
34977 		}
34978 		return _localctx;
34979 	}
34980 
34981 	public static class InsertExecClauseContext extends ParserRuleContext {
34982 		public ExecContext exec() {
34983 			return getRuleContext(ExecContext.class,0);
34984 		}
34985 		public ColumnNamesContext columnNames() {
34986 			return getRuleContext(ColumnNamesContext.class,0);
34987 		}
34988 		public InsertExecClauseContext(ParserRuleContext parent, int invokingState) {
34989 			super(parent, invokingState);
34990 		}
34991 		@Override public int getRuleIndex() { return RULE_insertExecClause; }
34992 		@Override
34993 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34994 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertExecClause(this);
34995 			else return visitor.visitChildren(this);
34996 		}
34997 	}
34998 
34999 	public final InsertExecClauseContext insertExecClause() throws RecognitionException {
35000 		InsertExecClauseContext _localctx = new InsertExecClauseContext(_ctx, getState());
35001 		enterRule(_localctx, 678, RULE_insertExecClause);
35002 		int _la;
35003 		try {
35004 			enterOuterAlt(_localctx, 1);
35005 			{
35006 			setState(4917);
35007 			_errHandler.sync(this);
35008 			_la = _input.LA(1);
35009 			if (_la==LP_) {
35010 				{
35011 				setState(4916);
35012 				columnNames();
35013 				}
35014 			}
35015 
35016 			setState(4919);
35017 			exec();
35018 			}
35019 		}
35020 		catch (RecognitionException re) {
35021 			_localctx.exception = re;
35022 			_errHandler.reportError(this, re);
35023 			_errHandler.recover(this, re);
35024 		}
35025 		finally {
35026 			exitRule();
35027 		}
35028 		return _localctx;
35029 	}
35030 
35031 	public static class ExecContext extends ParserRuleContext {
35032 		public ProcedureNameContext procedureName() {
35033 			return getRuleContext(ProcedureNameContext.class,0);
35034 		}
35035 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
35036 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
35037 		public List<ExprContext> expr() {
35038 			return getRuleContexts(ExprContext.class);
35039 		}
35040 		public ExprContext expr(int i) {
35041 			return getRuleContext(ExprContext.class,i);
35042 		}
35043 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35044 		public TerminalNode COMMA_(int i) {
35045 			return getToken(SQLServerStatementParser.COMMA_, i);
35046 		}
35047 		public ExecContext(ParserRuleContext parent, int invokingState) {
35048 			super(parent, invokingState);
35049 		}
35050 		@Override public int getRuleIndex() { return RULE_exec; }
35051 		@Override
35052 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35053 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExec(this);
35054 			else return visitor.visitChildren(this);
35055 		}
35056 	}
35057 
35058 	public final ExecContext exec() throws RecognitionException {
35059 		ExecContext _localctx = new ExecContext(_ctx, getState());
35060 		enterRule(_localctx, 680, RULE_exec);
35061 		int _la;
35062 		try {
35063 			enterOuterAlt(_localctx, 1);
35064 			{
35065 			setState(4921);
35066 			_la = _input.LA(1);
35067 			if ( !(_la==EXECUTE || _la==EXEC) ) {
35068 			_errHandler.recoverInline(this);
35069 			}
35070 			else {
35071 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35072 				_errHandler.reportMatch(this);
35073 				consume();
35074 			}
35075 			setState(4922);
35076 			procedureName();
35077 			setState(4931);
35078 			_errHandler.sync(this);
35079 			switch ( getInterpreter().adaptivePredict(_input,536,_ctx) ) {
35080 			case 1:
35081 				{
35082 				setState(4923);
35083 				expr(0);
35084 				setState(4928);
35085 				_errHandler.sync(this);
35086 				_la = _input.LA(1);
35087 				while (_la==COMMA_) {
35088 					{
35089 					{
35090 					setState(4924);
35091 					match(COMMA_);
35092 					setState(4925);
35093 					expr(0);
35094 					}
35095 					}
35096 					setState(4930);
35097 					_errHandler.sync(this);
35098 					_la = _input.LA(1);
35099 				}
35100 				}
35101 				break;
35102 			}
35103 			}
35104 		}
35105 		catch (RecognitionException re) {
35106 			_localctx.exception = re;
35107 			_errHandler.reportError(this, re);
35108 			_errHandler.recover(this, re);
35109 		}
35110 		finally {
35111 			exitRule();
35112 		}
35113 		return _localctx;
35114 	}
35115 
35116 	public static class UpdateContext extends ParserRuleContext {
35117 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
35118 		public TableReferencesContext tableReferences() {
35119 			return getRuleContext(TableReferencesContext.class,0);
35120 		}
35121 		public SetAssignmentsClauseContext setAssignmentsClause() {
35122 			return getRuleContext(SetAssignmentsClauseContext.class,0);
35123 		}
35124 		public WithClauseContext withClause() {
35125 			return getRuleContext(WithClauseContext.class,0);
35126 		}
35127 		public TopContext top() {
35128 			return getRuleContext(TopContext.class,0);
35129 		}
35130 		public WhereClauseContext whereClause() {
35131 			return getRuleContext(WhereClauseContext.class,0);
35132 		}
35133 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
35134 		public QueryHintContext queryHint() {
35135 			return getRuleContext(QueryHintContext.class,0);
35136 		}
35137 		public UpdateContext(ParserRuleContext parent, int invokingState) {
35138 			super(parent, invokingState);
35139 		}
35140 		@Override public int getRuleIndex() { return RULE_update; }
35141 		@Override
35142 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35143 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdate(this);
35144 			else return visitor.visitChildren(this);
35145 		}
35146 	}
35147 
35148 	public final UpdateContext update() throws RecognitionException {
35149 		UpdateContext _localctx = new UpdateContext(_ctx, getState());
35150 		enterRule(_localctx, 682, RULE_update);
35151 		int _la;
35152 		try {
35153 			enterOuterAlt(_localctx, 1);
35154 			{
35155 			setState(4934);
35156 			_errHandler.sync(this);
35157 			_la = _input.LA(1);
35158 			if (_la==WITH) {
35159 				{
35160 				setState(4933);
35161 				withClause();
35162 				}
35163 			}
35164 
35165 			setState(4936);
35166 			match(UPDATE);
35167 			setState(4938);
35168 			_errHandler.sync(this);
35169 			switch ( getInterpreter().adaptivePredict(_input,538,_ctx) ) {
35170 			case 1:
35171 				{
35172 				setState(4937);
35173 				top();
35174 				}
35175 				break;
35176 			}
35177 			setState(4940);
35178 			tableReferences();
35179 			setState(4941);
35180 			setAssignmentsClause();
35181 			setState(4943);
35182 			_errHandler.sync(this);
35183 			_la = _input.LA(1);
35184 			if (_la==WHERE) {
35185 				{
35186 				setState(4942);
35187 				whereClause();
35188 				}
35189 			}
35190 
35191 			setState(4947);
35192 			_errHandler.sync(this);
35193 			_la = _input.LA(1);
35194 			if (_la==OPTION) {
35195 				{
35196 				setState(4945);
35197 				match(OPTION);
35198 				setState(4946);
35199 				queryHint();
35200 				}
35201 			}
35202 
35203 			}
35204 		}
35205 		catch (RecognitionException re) {
35206 			_localctx.exception = re;
35207 			_errHandler.reportError(this, re);
35208 			_errHandler.recover(this, re);
35209 		}
35210 		finally {
35211 			exitRule();
35212 		}
35213 		return _localctx;
35214 	}
35215 
35216 	public static class AssignmentContext extends ParserRuleContext {
35217 		public ColumnNameContext columnName() {
35218 			return getRuleContext(ColumnNameContext.class,0);
35219 		}
35220 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35221 		public AssignmentValueContext assignmentValue() {
35222 			return getRuleContext(AssignmentValueContext.class,0);
35223 		}
35224 		public AssignmentContext(ParserRuleContext parent, int invokingState) {
35225 			super(parent, invokingState);
35226 		}
35227 		@Override public int getRuleIndex() { return RULE_assignment; }
35228 		@Override
35229 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35230 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignment(this);
35231 			else return visitor.visitChildren(this);
35232 		}
35233 	}
35234 
35235 	public final AssignmentContext assignment() throws RecognitionException {
35236 		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
35237 		enterRule(_localctx, 684, RULE_assignment);
35238 		try {
35239 			enterOuterAlt(_localctx, 1);
35240 			{
35241 			setState(4949);
35242 			columnName();
35243 			setState(4950);
35244 			match(EQ_);
35245 			setState(4951);
35246 			assignmentValue();
35247 			}
35248 		}
35249 		catch (RecognitionException re) {
35250 			_localctx.exception = re;
35251 			_errHandler.reportError(this, re);
35252 			_errHandler.recover(this, re);
35253 		}
35254 		finally {
35255 			exitRule();
35256 		}
35257 		return _localctx;
35258 	}
35259 
35260 	public static class SetAssignmentsClauseContext extends ParserRuleContext {
35261 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
35262 		public List<AssignmentContext> assignment() {
35263 			return getRuleContexts(AssignmentContext.class);
35264 		}
35265 		public AssignmentContext assignment(int i) {
35266 			return getRuleContext(AssignmentContext.class,i);
35267 		}
35268 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35269 		public TerminalNode COMMA_(int i) {
35270 			return getToken(SQLServerStatementParser.COMMA_, i);
35271 		}
35272 		public FromClauseContext fromClause() {
35273 			return getRuleContext(FromClauseContext.class,0);
35274 		}
35275 		public SetAssignmentsClauseContext(ParserRuleContext parent, int invokingState) {
35276 			super(parent, invokingState);
35277 		}
35278 		@Override public int getRuleIndex() { return RULE_setAssignmentsClause; }
35279 		@Override
35280 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35281 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetAssignmentsClause(this);
35282 			else return visitor.visitChildren(this);
35283 		}
35284 	}
35285 
35286 	public final SetAssignmentsClauseContext setAssignmentsClause() throws RecognitionException {
35287 		SetAssignmentsClauseContext _localctx = new SetAssignmentsClauseContext(_ctx, getState());
35288 		enterRule(_localctx, 686, RULE_setAssignmentsClause);
35289 		int _la;
35290 		try {
35291 			enterOuterAlt(_localctx, 1);
35292 			{
35293 			setState(4953);
35294 			match(SET);
35295 			setState(4954);
35296 			assignment();
35297 			setState(4959);
35298 			_errHandler.sync(this);
35299 			_la = _input.LA(1);
35300 			while (_la==COMMA_) {
35301 				{
35302 				{
35303 				setState(4955);
35304 				match(COMMA_);
35305 				setState(4956);
35306 				assignment();
35307 				}
35308 				}
35309 				setState(4961);
35310 				_errHandler.sync(this);
35311 				_la = _input.LA(1);
35312 			}
35313 			setState(4963);
35314 			_errHandler.sync(this);
35315 			_la = _input.LA(1);
35316 			if (_la==FROM) {
35317 				{
35318 				setState(4962);
35319 				fromClause();
35320 				}
35321 			}
35322 
35323 			}
35324 		}
35325 		catch (RecognitionException re) {
35326 			_localctx.exception = re;
35327 			_errHandler.reportError(this, re);
35328 			_errHandler.recover(this, re);
35329 		}
35330 		finally {
35331 			exitRule();
35332 		}
35333 		return _localctx;
35334 	}
35335 
35336 	public static class AssignmentValuesContext extends ParserRuleContext {
35337 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35338 		public List<AssignmentValueContext> assignmentValue() {
35339 			return getRuleContexts(AssignmentValueContext.class);
35340 		}
35341 		public AssignmentValueContext assignmentValue(int i) {
35342 			return getRuleContext(AssignmentValueContext.class,i);
35343 		}
35344 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35345 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35346 		public TerminalNode COMMA_(int i) {
35347 			return getToken(SQLServerStatementParser.COMMA_, i);
35348 		}
35349 		public AssignmentValuesContext(ParserRuleContext parent, int invokingState) {
35350 			super(parent, invokingState);
35351 		}
35352 		@Override public int getRuleIndex() { return RULE_assignmentValues; }
35353 		@Override
35354 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35355 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValues(this);
35356 			else return visitor.visitChildren(this);
35357 		}
35358 	}
35359 
35360 	public final AssignmentValuesContext assignmentValues() throws RecognitionException {
35361 		AssignmentValuesContext _localctx = new AssignmentValuesContext(_ctx, getState());
35362 		enterRule(_localctx, 688, RULE_assignmentValues);
35363 		int _la;
35364 		try {
35365 			setState(4978);
35366 			_errHandler.sync(this);
35367 			switch ( getInterpreter().adaptivePredict(_input,544,_ctx) ) {
35368 			case 1:
35369 				enterOuterAlt(_localctx, 1);
35370 				{
35371 				setState(4965);
35372 				match(LP_);
35373 				setState(4966);
35374 				assignmentValue();
35375 				setState(4971);
35376 				_errHandler.sync(this);
35377 				_la = _input.LA(1);
35378 				while (_la==COMMA_) {
35379 					{
35380 					{
35381 					setState(4967);
35382 					match(COMMA_);
35383 					setState(4968);
35384 					assignmentValue();
35385 					}
35386 					}
35387 					setState(4973);
35388 					_errHandler.sync(this);
35389 					_la = _input.LA(1);
35390 				}
35391 				setState(4974);
35392 				match(RP_);
35393 				}
35394 				break;
35395 			case 2:
35396 				enterOuterAlt(_localctx, 2);
35397 				{
35398 				setState(4976);
35399 				match(LP_);
35400 				setState(4977);
35401 				match(RP_);
35402 				}
35403 				break;
35404 			}
35405 		}
35406 		catch (RecognitionException re) {
35407 			_localctx.exception = re;
35408 			_errHandler.reportError(this, re);
35409 			_errHandler.recover(this, re);
35410 		}
35411 		finally {
35412 			exitRule();
35413 		}
35414 		return _localctx;
35415 	}
35416 
35417 	public static class AssignmentValueContext extends ParserRuleContext {
35418 		public ExprContext expr() {
35419 			return getRuleContext(ExprContext.class,0);
35420 		}
35421 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
35422 		public AssignmentValueContext(ParserRuleContext parent, int invokingState) {
35423 			super(parent, invokingState);
35424 		}
35425 		@Override public int getRuleIndex() { return RULE_assignmentValue; }
35426 		@Override
35427 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35428 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValue(this);
35429 			else return visitor.visitChildren(this);
35430 		}
35431 	}
35432 
35433 	public final AssignmentValueContext assignmentValue() throws RecognitionException {
35434 		AssignmentValueContext _localctx = new AssignmentValueContext(_ctx, getState());
35435 		enterRule(_localctx, 690, RULE_assignmentValue);
35436 		try {
35437 			setState(4982);
35438 			_errHandler.sync(this);
35439 			switch (_input.LA(1)) {
35440 			case NOT_:
35441 			case TILDE_:
35442 			case PLUS_:
35443 			case MINUS_:
35444 			case LP_:
35445 			case LBE_:
35446 			case QUESTION_:
35447 			case DOLLAR_:
35448 			case TRUNCATE:
35449 			case SCHEMA:
35450 			case COLUMNS:
35451 			case PRECISION:
35452 			case FUNCTION:
35453 			case TRIGGER:
35454 			case CASE:
35455 			case CAST:
35456 			case SUBSTRING:
35457 			case OFF:
35458 			case IF:
35459 			case NOT:
35460 			case NULL:
35461 			case TRUE:
35462 			case FALSE:
35463 			case EXISTS:
35464 			case GROUP:
35465 			case LIMIT:
35466 			case OFFSET:
35467 			case SAVEPOINT:
35468 			case BOOLEAN:
35469 			case CHAR:
35470 			case ARRAY:
35471 			case INTERVAL:
35472 			case DATE:
35473 			case TIME:
35474 			case TIMESTAMP:
35475 			case LOCALTIME:
35476 			case LOCALTIMESTAMP:
35477 			case QUARTER:
35478 			case WEEK:
35479 			case DAY:
35480 			case SECOND:
35481 			case MICROSECOND:
35482 			case MAX:
35483 			case MIN:
35484 			case SUM:
35485 			case COUNT:
35486 			case AVG:
35487 			case ENABLE:
35488 			case DISABLE:
35489 			case INSTANCE:
35490 			case DO:
35491 			case DEFINER:
35492 			case SQL:
35493 			case CASCADED:
35494 			case LOCAL:
35495 			case NEXT:
35496 			case NAME:
35497 			case INTEGER:
35498 			case TYPE:
35499 			case TEXT:
35500 			case VIEWS:
35501 			case READ_ONLY:
35502 			case DATABASE:
35503 			case RETURNS:
35504 			case DATEPART:
35505 			case PASSWORD:
35506 			case BINARY:
35507 			case HIDDEN_:
35508 			case MOD:
35509 			case PARTITION:
35510 			case PARTITIONS:
35511 			case TOP:
35512 			case ROW:
35513 			case ROWS:
35514 			case XOR:
35515 			case ALWAYS:
35516 			case ROLE:
35517 			case START:
35518 			case ALGORITHM:
35519 			case AUTO:
35520 			case BLOCKERS:
35521 			case CLUSTERED:
35522 			case NONCLUSTERED:
35523 			case COLUMNSTORE:
35524 			case CONTENT:
35525 			case CONVERT:
35526 			case YEARS:
35527 			case MONTHS:
35528 			case WEEKS:
35529 			case DAYS:
35530 			case MINUTES:
35531 			case DENY:
35532 			case DETERMINISTIC:
35533 			case DISTRIBUTION:
35534 			case DOCUMENT:
35535 			case DURABILITY:
35536 			case ENCRYPTED:
35537 			case FILESTREAM:
35538 			case FILETABLE:
35539 			case FILLFACTOR:
35540 			case FOLLOWING:
35541 			case HASH:
35542 			case HEAP:
35543 			case INBOUND:
35544 			case OUTBOUND:
35545 			case UNBOUNDED:
35546 			case INFINITE:
35547 			case LOGIN:
35548 			case MASKED:
35549 			case MAXDOP:
35550 			case MOVE:
35551 			case NOCHECK:
35552 			case OBJECT:
35553 			case ONLINE:
35554 			case OVER:
35555 			case PAGE:
35556 			case PAUSED:
35557 			case PERIOD:
35558 			case PERSISTED:
35559 			case PRECEDING:
35560 			case RANDOMIZED:
35561 			case RANGE:
35562 			case REBUILD:
35563 			case REPLICATE:
35564 			case REPLICATION:
35565 			case RESUMABLE:
35566 			case ROWGUIDCOL:
35567 			case SAVE:
35568 			case SELF:
35569 			case SPARSE:
35570 			case SWITCH:
35571 			case TRAN:
35572 			case TRANCOUNT:
35573 			case CONTROL:
35574 			case CONCAT:
35575 			case TAKE:
35576 			case OWNERSHIP:
35577 			case DEFINITION:
35578 			case APPLICATION:
35579 			case ASSEMBLY:
35580 			case SYMMETRIC:
35581 			case ASYMMETRIC:
35582 			case SERVER:
35583 			case RECEIVE:
35584 			case CHANGE:
35585 			case TRACE:
35586 			case TRACKING:
35587 			case RESOURCES:
35588 			case SETTINGS:
35589 			case STATE:
35590 			case AVAILABILITY:
35591 			case CREDENTIAL:
35592 			case ENDPOINT:
35593 			case EVENT:
35594 			case NOTIFICATION:
35595 			case LINKED:
35596 			case AUDIT:
35597 			case DDL:
35598 			case XML:
35599 			case IMPERSONATE:
35600 			case SECURABLES:
35601 			case AUTHENTICATE:
35602 			case EXTERNAL:
35603 			case ACCESS:
35604 			case ADMINISTER:
35605 			case BULK:
35606 			case OPERATIONS:
35607 			case UNSAFE:
35608 			case SHUTDOWN:
35609 			case SCOPED:
35610 			case CONFIGURATION:
35611 			case DATASPACE:
35612 			case SERVICE:
35613 			case CERTIFICATE:
35614 			case CONTRACT:
35615 			case ENCRYPTION:
35616 			case MASTER:
35617 			case DATA:
35618 			case SOURCE:
35619 			case FILE:
35620 			case FORMAT:
35621 			case LIBRARY:
35622 			case FULLTEXT:
35623 			case MASK:
35624 			case UNMASK:
35625 			case MESSAGE:
35626 			case REMOTE:
35627 			case BINDING:
35628 			case ROUTE:
35629 			case SECURITY:
35630 			case POLICY:
35631 			case AGGREGATE:
35632 			case QUEUE:
35633 			case RULE:
35634 			case SYNONYM:
35635 			case COLLECTION:
35636 			case SCRIPT:
35637 			case KILL:
35638 			case BACKUP:
35639 			case LOG:
35640 			case SHOWPLAN:
35641 			case SUBSCRIBE:
35642 			case QUERY:
35643 			case NOTIFICATIONS:
35644 			case CHECKPOINT:
35645 			case SEQUENCE:
35646 			case ABORT_AFTER_WAIT:
35647 			case ALLOW_PAGE_LOCKS:
35648 			case ALLOW_ROW_LOCKS:
35649 			case ALL_SPARSE_COLUMNS:
35650 			case BUCKET_COUNT:
35651 			case COLUMNSTORE_ARCHIVE:
35652 			case COLUMN_ENCRYPTION_KEY:
35653 			case COLUMN_SET:
35654 			case COMPRESSION_DELAY:
35655 			case DATABASE_DEAULT:
35656 			case DATA_COMPRESSION:
35657 			case DATA_CONSISTENCY_CHECK:
35658 			case ENCRYPTION_TYPE:
35659 			case SYSTEM_TIME:
35660 			case SYSTEM_VERSIONING:
35661 			case TEXTIMAGE_ON:
35662 			case WAIT_AT_LOW_PRIORITY:
35663 			case STATISTICS_INCREMENTAL:
35664 			case STATISTICS_NORECOMPUTE:
35665 			case ROUND_ROBIN:
35666 			case SCHEMA_AND_DATA:
35667 			case SCHEMA_ONLY:
35668 			case SORT_IN_TEMPDB:
35669 			case IGNORE_DUP_KEY:
35670 			case IMPLICIT_TRANSACTIONS:
35671 			case MAX_DURATION:
35672 			case MEMORY_OPTIMIZED:
35673 			case MIGRATION_STATE:
35674 			case PAD_INDEX:
35675 			case REMOTE_DATA_ARCHIVE:
35676 			case FILESTREAM_ON:
35677 			case FILETABLE_COLLATE_FILENAME:
35678 			case FILETABLE_DIRECTORY:
35679 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
35680 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
35681 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
35682 			case FILTER_PREDICATE:
35683 			case HISTORY_RETENTION_PERIOD:
35684 			case HISTORY_TABLE:
35685 			case LOCK_ESCALATION:
35686 			case DROP_EXISTING:
35687 			case ROW_NUMBER:
35688 			case FIRST:
35689 			case DATETIME2:
35690 			case OUTPUT:
35691 			case INSERTED:
35692 			case DELETED:
35693 			case FILENAME:
35694 			case MAXSIZE:
35695 			case FILEGROWTH:
35696 			case UNLIMITED:
35697 			case KB:
35698 			case MB:
35699 			case GB:
35700 			case TB:
35701 			case MEMORY_OPTIMIZED_DATA:
35702 			case FILEGROUP:
35703 			case NON_TRANSACTED_ACCESS:
35704 			case DB_CHAINING:
35705 			case TRUSTWORTHY:
35706 			case FORWARD_ONLY:
35707 			case KEYSET:
35708 			case FAST_FORWARD:
35709 			case SCROLL_LOCKS:
35710 			case OPTIMISTIC:
35711 			case TYPE_WARNING:
35712 			case SCHEMABINDING:
35713 			case CALLER:
35714 			case OWNER:
35715 			case SNAPSHOT:
35716 			case REPEATABLE:
35717 			case SERIALIZABLE:
35718 			case NATIVE_COMPILATION:
35719 			case VIEW_METADATA:
35720 			case INSTEAD:
35721 			case APPEND:
35722 			case INCREMENT:
35723 			case CACHE:
35724 			case MINVALUE:
35725 			case MAXVALUE:
35726 			case RESTART:
35727 			case LOB_COMPACTION:
35728 			case COMPRESS_ALL_ROW_GROUPS:
35729 			case REORGANIZE:
35730 			case RESUME:
35731 			case PAUSE:
35732 			case ABORT:
35733 			case ACCELERATED_DATABASE_RECOVERY:
35734 			case PERSISTENT_VERSION_STORE_FILEGROUP:
35735 			case IMMEDIATE:
35736 			case NO_WAIT:
35737 			case TARGET_RECOVERY_TIME:
35738 			case SECONDS:
35739 			case HONOR_BROKER_PRIORITY:
35740 			case ERROR_BROKER_CONVERSATIONS:
35741 			case NEW_BROKER:
35742 			case DISABLE_BROKER:
35743 			case ENABLE_BROKER:
35744 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
35745 			case READ_COMMITTED_SNAPSHOT:
35746 			case ALLOW_SNAPSHOT_ISOLATION:
35747 			case RECURSIVE_TRIGGERS:
35748 			case QUOTED_IDENTIFIER:
35749 			case NUMERIC_ROUNDABORT:
35750 			case CONCAT_NULL_YIELDS_NULL:
35751 			case COMPATIBILITY_LEVEL:
35752 			case ARITHABORT:
35753 			case ANSI_WARNINGS:
35754 			case ANSI_PADDING:
35755 			case ANSI_NULLS:
35756 			case ANSI_NULL_DEFAULT:
35757 			case PAGE_VERIFY:
35758 			case CHECKSUM:
35759 			case TORN_PAGE_DETECTION:
35760 			case BULK_LOGGED:
35761 			case RECOVERY:
35762 			case TOTAL_EXECUTION_CPU_TIME_MS:
35763 			case TOTAL_COMPILE_CPU_TIME_MS:
35764 			case STALE_CAPTURE_POLICY_THRESHOLD:
35765 			case EXECUTION_COUNT:
35766 			case QUERY_CAPTURE_POLICY:
35767 			case WAIT_STATS_CAPTURE_MODE:
35768 			case MAX_PLANS_PER_QUERY:
35769 			case QUERY_CAPTURE_MODE:
35770 			case SIZE_BASED_CLEANUP_MODE:
35771 			case INTERVAL_LENGTH_MINUTES:
35772 			case MAX_STORAGE_SIZE_MB:
35773 			case DATA_FLUSH_INTERVAL_SECONDS:
35774 			case CLEANUP_POLICY:
35775 			case CUSTOM:
35776 			case STALE_QUERY_THRESHOLD_DAYS:
35777 			case OPERATION_MODE:
35778 			case QUERY_STORE:
35779 			case CURSOR_DEFAULT:
35780 			case GLOBAL:
35781 			case CURSOR_CLOSE_ON_COMMIT:
35782 			case HOURS:
35783 			case CHANGE_RETENTION:
35784 			case AUTO_CLEANUP:
35785 			case CHANGE_TRACKING:
35786 			case AUTOMATIC_TUNING:
35787 			case FORCE_LAST_GOOD_PLAN:
35788 			case AUTO_UPDATE_STATISTICS_ASYNC:
35789 			case AUTO_UPDATE_STATISTICS:
35790 			case AUTO_SHRINK:
35791 			case AUTO_CREATE_STATISTICS:
35792 			case INCREMENTAL:
35793 			case AUTO_CLOSE:
35794 			case DATA_RETENTION:
35795 			case TEMPORAL_HISTORY_RETENTION:
35796 			case EDITION:
35797 			case MIXED_PAGE_ALLOCATION:
35798 			case DISABLED:
35799 			case ALLOWED:
35800 			case HADR:
35801 			case MULTI_USER:
35802 			case RESTRICTED_USER:
35803 			case SINGLE_USER:
35804 			case OFFLINE:
35805 			case EMERGENCY:
35806 			case SUSPEND:
35807 			case DATE_CORRELATION_OPTIMIZATION:
35808 			case ELASTIC_POOL:
35809 			case SERVICE_OBJECTIVE:
35810 			case DATABASE_NAME:
35811 			case ALLOW_CONNECTIONS:
35812 			case GEO:
35813 			case NAMED:
35814 			case DATEFIRST:
35815 			case BACKUP_STORAGE_REDUNDANCY:
35816 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
35817 			case SECONDARY:
35818 			case FAILOVER:
35819 			case DEFAULT_FULLTEXT_LANGUAGE:
35820 			case DEFAULT_LANGUAGE:
35821 			case INLINE:
35822 			case NESTED_TRIGGERS:
35823 			case TRANSFORM_NOISE_WORDS:
35824 			case TWO_DIGIT_YEAR_CUTOFF:
35825 			case PERSISTENT_LOG_BUFFER:
35826 			case DIRECTORY_NAME:
35827 			case DATEFORMAT:
35828 			case DELAYED_DURABILITY:
35829 			case AUTHORIZATION:
35830 			case TRANSFER:
35831 			case PROVIDER:
35832 			case SEARCH:
35833 			case MEMBER:
35834 			case IDENTIFIER_:
35835 			case DELIMITED_IDENTIFIER_:
35836 			case STRING_:
35837 			case NUMBER_:
35838 			case HEX_DIGIT_:
35839 			case BIT_NUM_:
35840 			case NCHAR_TEXT:
35841 				enterOuterAlt(_localctx, 1);
35842 				{
35843 				setState(4980);
35844 				expr(0);
35845 				}
35846 				break;
35847 			case DEFAULT:
35848 				enterOuterAlt(_localctx, 2);
35849 				{
35850 				setState(4981);
35851 				match(DEFAULT);
35852 				}
35853 				break;
35854 			default:
35855 				throw new NoViableAltException(this);
35856 			}
35857 		}
35858 		catch (RecognitionException re) {
35859 			_localctx.exception = re;
35860 			_errHandler.reportError(this, re);
35861 			_errHandler.recover(this, re);
35862 		}
35863 		finally {
35864 			exitRule();
35865 		}
35866 		return _localctx;
35867 	}
35868 
35869 	public static class DeleteContext extends ParserRuleContext {
35870 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
35871 		public SingleTableClauseContext singleTableClause() {
35872 			return getRuleContext(SingleTableClauseContext.class,0);
35873 		}
35874 		public MultipleTablesClauseContext multipleTablesClause() {
35875 			return getRuleContext(MultipleTablesClauseContext.class,0);
35876 		}
35877 		public WithClauseContext withClause() {
35878 			return getRuleContext(WithClauseContext.class,0);
35879 		}
35880 		public TopContext top() {
35881 			return getRuleContext(TopContext.class,0);
35882 		}
35883 		public OutputClauseContext outputClause() {
35884 			return getRuleContext(OutputClauseContext.class,0);
35885 		}
35886 		public WhereClauseContext whereClause() {
35887 			return getRuleContext(WhereClauseContext.class,0);
35888 		}
35889 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
35890 		public QueryHintContext queryHint() {
35891 			return getRuleContext(QueryHintContext.class,0);
35892 		}
35893 		public DeleteContext(ParserRuleContext parent, int invokingState) {
35894 			super(parent, invokingState);
35895 		}
35896 		@Override public int getRuleIndex() { return RULE_delete; }
35897 		@Override
35898 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35899 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelete(this);
35900 			else return visitor.visitChildren(this);
35901 		}
35902 	}
35903 
35904 	public final DeleteContext delete() throws RecognitionException {
35905 		DeleteContext _localctx = new DeleteContext(_ctx, getState());
35906 		enterRule(_localctx, 692, RULE_delete);
35907 		int _la;
35908 		try {
35909 			enterOuterAlt(_localctx, 1);
35910 			{
35911 			setState(4985);
35912 			_errHandler.sync(this);
35913 			_la = _input.LA(1);
35914 			if (_la==WITH) {
35915 				{
35916 				setState(4984);
35917 				withClause();
35918 				}
35919 			}
35920 
35921 			setState(4987);
35922 			match(DELETE);
35923 			setState(4989);
35924 			_errHandler.sync(this);
35925 			switch ( getInterpreter().adaptivePredict(_input,547,_ctx) ) {
35926 			case 1:
35927 				{
35928 				setState(4988);
35929 				top();
35930 				}
35931 				break;
35932 			}
35933 			setState(4993);
35934 			_errHandler.sync(this);
35935 			switch ( getInterpreter().adaptivePredict(_input,548,_ctx) ) {
35936 			case 1:
35937 				{
35938 				setState(4991);
35939 				singleTableClause();
35940 				}
35941 				break;
35942 			case 2:
35943 				{
35944 				setState(4992);
35945 				multipleTablesClause();
35946 				}
35947 				break;
35948 			}
35949 			setState(4996);
35950 			_errHandler.sync(this);
35951 			_la = _input.LA(1);
35952 			if (_la==OUTPUT) {
35953 				{
35954 				setState(4995);
35955 				outputClause();
35956 				}
35957 			}
35958 
35959 			setState(4999);
35960 			_errHandler.sync(this);
35961 			_la = _input.LA(1);
35962 			if (_la==WHERE) {
35963 				{
35964 				setState(4998);
35965 				whereClause();
35966 				}
35967 			}
35968 
35969 			setState(5003);
35970 			_errHandler.sync(this);
35971 			_la = _input.LA(1);
35972 			if (_la==OPTION) {
35973 				{
35974 				setState(5001);
35975 				match(OPTION);
35976 				setState(5002);
35977 				queryHint();
35978 				}
35979 			}
35980 
35981 			}
35982 		}
35983 		catch (RecognitionException re) {
35984 			_localctx.exception = re;
35985 			_errHandler.reportError(this, re);
35986 			_errHandler.recover(this, re);
35987 		}
35988 		finally {
35989 			exitRule();
35990 		}
35991 		return _localctx;
35992 	}
35993 
35994 	public static class SingleTableClauseContext extends ParserRuleContext {
35995 		public TableNameContext tableName() {
35996 			return getRuleContext(TableNameContext.class,0);
35997 		}
35998 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
35999 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36000 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36001 		public AliasContext alias() {
36002 			return getRuleContext(AliasContext.class,0);
36003 		}
36004 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
36005 		public SingleTableClauseContext(ParserRuleContext parent, int invokingState) {
36006 			super(parent, invokingState);
36007 		}
36008 		@Override public int getRuleIndex() { return RULE_singleTableClause; }
36009 		@Override
36010 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36011 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSingleTableClause(this);
36012 			else return visitor.visitChildren(this);
36013 		}
36014 	}
36015 
36016 	public final SingleTableClauseContext singleTableClause() throws RecognitionException {
36017 		SingleTableClauseContext _localctx = new SingleTableClauseContext(_ctx, getState());
36018 		enterRule(_localctx, 694, RULE_singleTableClause);
36019 		int _la;
36020 		try {
36021 			enterOuterAlt(_localctx, 1);
36022 			{
36023 			setState(5006);
36024 			_errHandler.sync(this);
36025 			_la = _input.LA(1);
36026 			if (_la==FROM) {
36027 				{
36028 				setState(5005);
36029 				match(FROM);
36030 				}
36031 			}
36032 
36033 			setState(5009);
36034 			_errHandler.sync(this);
36035 			_la = _input.LA(1);
36036 			if (_la==LP_) {
36037 				{
36038 				setState(5008);
36039 				match(LP_);
36040 				}
36041 			}
36042 
36043 			setState(5011);
36044 			tableName();
36045 			setState(5013);
36046 			_errHandler.sync(this);
36047 			_la = _input.LA(1);
36048 			if (_la==RP_) {
36049 				{
36050 				setState(5012);
36051 				match(RP_);
36052 				}
36053 			}
36054 
36055 			setState(5019);
36056 			_errHandler.sync(this);
36057 			switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) {
36058 			case 1:
36059 				{
36060 				setState(5016);
36061 				_errHandler.sync(this);
36062 				_la = _input.LA(1);
36063 				if (_la==AS) {
36064 					{
36065 					setState(5015);
36066 					match(AS);
36067 					}
36068 				}
36069 
36070 				setState(5018);
36071 				alias();
36072 				}
36073 				break;
36074 			}
36075 			}
36076 		}
36077 		catch (RecognitionException re) {
36078 			_localctx.exception = re;
36079 			_errHandler.reportError(this, re);
36080 			_errHandler.recover(this, re);
36081 		}
36082 		finally {
36083 			exitRule();
36084 		}
36085 		return _localctx;
36086 	}
36087 
36088 	public static class MultipleTablesClauseContext extends ParserRuleContext {
36089 		public MultipleTableNamesContext multipleTableNames() {
36090 			return getRuleContext(MultipleTableNamesContext.class,0);
36091 		}
36092 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
36093 		public TableReferencesContext tableReferences() {
36094 			return getRuleContext(TableReferencesContext.class,0);
36095 		}
36096 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
36097 		public MultipleTablesClauseContext(ParserRuleContext parent, int invokingState) {
36098 			super(parent, invokingState);
36099 		}
36100 		@Override public int getRuleIndex() { return RULE_multipleTablesClause; }
36101 		@Override
36102 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36103 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTablesClause(this);
36104 			else return visitor.visitChildren(this);
36105 		}
36106 	}
36107 
36108 	public final MultipleTablesClauseContext multipleTablesClause() throws RecognitionException {
36109 		MultipleTablesClauseContext _localctx = new MultipleTablesClauseContext(_ctx, getState());
36110 		enterRule(_localctx, 696, RULE_multipleTablesClause);
36111 		try {
36112 			setState(5030);
36113 			_errHandler.sync(this);
36114 			switch (_input.LA(1)) {
36115 			case TRUNCATE:
36116 			case SCHEMA:
36117 			case COLUMNS:
36118 			case PRECISION:
36119 			case FUNCTION:
36120 			case TRIGGER:
36121 			case CAST:
36122 			case SUBSTRING:
36123 			case OFF:
36124 			case GROUP:
36125 			case LIMIT:
36126 			case OFFSET:
36127 			case SAVEPOINT:
36128 			case BOOLEAN:
36129 			case ARRAY:
36130 			case DATE:
36131 			case LOCALTIME:
36132 			case LOCALTIMESTAMP:
36133 			case QUARTER:
36134 			case WEEK:
36135 			case DAY:
36136 			case SECOND:
36137 			case MICROSECOND:
36138 			case MAX:
36139 			case MIN:
36140 			case SUM:
36141 			case COUNT:
36142 			case AVG:
36143 			case ENABLE:
36144 			case DISABLE:
36145 			case INSTANCE:
36146 			case DO:
36147 			case DEFINER:
36148 			case SQL:
36149 			case CASCADED:
36150 			case LOCAL:
36151 			case NEXT:
36152 			case NAME:
36153 			case INTEGER:
36154 			case TYPE:
36155 			case TEXT:
36156 			case VIEWS:
36157 			case READ_ONLY:
36158 			case DATABASE:
36159 			case RETURNS:
36160 			case DATEPART:
36161 			case PASSWORD:
36162 			case BINARY:
36163 			case HIDDEN_:
36164 			case MOD:
36165 			case PARTITION:
36166 			case PARTITIONS:
36167 			case TOP:
36168 			case ROW:
36169 			case ROWS:
36170 			case XOR:
36171 			case ALWAYS:
36172 			case ROLE:
36173 			case START:
36174 			case ALGORITHM:
36175 			case AUTO:
36176 			case BLOCKERS:
36177 			case CLUSTERED:
36178 			case NONCLUSTERED:
36179 			case COLUMNSTORE:
36180 			case CONTENT:
36181 			case YEARS:
36182 			case MONTHS:
36183 			case WEEKS:
36184 			case DAYS:
36185 			case MINUTES:
36186 			case DENY:
36187 			case DETERMINISTIC:
36188 			case DISTRIBUTION:
36189 			case DOCUMENT:
36190 			case DURABILITY:
36191 			case ENCRYPTED:
36192 			case FILESTREAM:
36193 			case FILETABLE:
36194 			case FILLFACTOR:
36195 			case FOLLOWING:
36196 			case HASH:
36197 			case HEAP:
36198 			case INBOUND:
36199 			case OUTBOUND:
36200 			case UNBOUNDED:
36201 			case INFINITE:
36202 			case LOGIN:
36203 			case MASKED:
36204 			case MAXDOP:
36205 			case MOVE:
36206 			case NOCHECK:
36207 			case OBJECT:
36208 			case ONLINE:
36209 			case OVER:
36210 			case PAGE:
36211 			case PAUSED:
36212 			case PERIOD:
36213 			case PERSISTED:
36214 			case PRECEDING:
36215 			case RANDOMIZED:
36216 			case RANGE:
36217 			case REBUILD:
36218 			case REPLICATE:
36219 			case REPLICATION:
36220 			case RESUMABLE:
36221 			case ROWGUIDCOL:
36222 			case SAVE:
36223 			case SELF:
36224 			case SPARSE:
36225 			case SWITCH:
36226 			case TRAN:
36227 			case TRANCOUNT:
36228 			case CONTROL:
36229 			case CONCAT:
36230 			case TAKE:
36231 			case OWNERSHIP:
36232 			case DEFINITION:
36233 			case APPLICATION:
36234 			case ASSEMBLY:
36235 			case SYMMETRIC:
36236 			case ASYMMETRIC:
36237 			case SERVER:
36238 			case RECEIVE:
36239 			case CHANGE:
36240 			case TRACE:
36241 			case TRACKING:
36242 			case RESOURCES:
36243 			case SETTINGS:
36244 			case STATE:
36245 			case AVAILABILITY:
36246 			case CREDENTIAL:
36247 			case ENDPOINT:
36248 			case EVENT:
36249 			case NOTIFICATION:
36250 			case LINKED:
36251 			case AUDIT:
36252 			case DDL:
36253 			case XML:
36254 			case IMPERSONATE:
36255 			case SECURABLES:
36256 			case AUTHENTICATE:
36257 			case EXTERNAL:
36258 			case ACCESS:
36259 			case ADMINISTER:
36260 			case BULK:
36261 			case OPERATIONS:
36262 			case UNSAFE:
36263 			case SHUTDOWN:
36264 			case SCOPED:
36265 			case CONFIGURATION:
36266 			case DATASPACE:
36267 			case SERVICE:
36268 			case CERTIFICATE:
36269 			case CONTRACT:
36270 			case ENCRYPTION:
36271 			case MASTER:
36272 			case DATA:
36273 			case SOURCE:
36274 			case FILE:
36275 			case FORMAT:
36276 			case LIBRARY:
36277 			case FULLTEXT:
36278 			case MASK:
36279 			case UNMASK:
36280 			case MESSAGE:
36281 			case REMOTE:
36282 			case BINDING:
36283 			case ROUTE:
36284 			case SECURITY:
36285 			case POLICY:
36286 			case AGGREGATE:
36287 			case QUEUE:
36288 			case RULE:
36289 			case SYNONYM:
36290 			case COLLECTION:
36291 			case SCRIPT:
36292 			case KILL:
36293 			case BACKUP:
36294 			case LOG:
36295 			case SHOWPLAN:
36296 			case SUBSCRIBE:
36297 			case QUERY:
36298 			case NOTIFICATIONS:
36299 			case CHECKPOINT:
36300 			case SEQUENCE:
36301 			case ABORT_AFTER_WAIT:
36302 			case ALLOW_PAGE_LOCKS:
36303 			case ALLOW_ROW_LOCKS:
36304 			case ALL_SPARSE_COLUMNS:
36305 			case BUCKET_COUNT:
36306 			case COLUMNSTORE_ARCHIVE:
36307 			case COLUMN_ENCRYPTION_KEY:
36308 			case COLUMN_SET:
36309 			case COMPRESSION_DELAY:
36310 			case DATABASE_DEAULT:
36311 			case DATA_COMPRESSION:
36312 			case DATA_CONSISTENCY_CHECK:
36313 			case ENCRYPTION_TYPE:
36314 			case SYSTEM_TIME:
36315 			case SYSTEM_VERSIONING:
36316 			case TEXTIMAGE_ON:
36317 			case WAIT_AT_LOW_PRIORITY:
36318 			case STATISTICS_INCREMENTAL:
36319 			case STATISTICS_NORECOMPUTE:
36320 			case ROUND_ROBIN:
36321 			case SCHEMA_AND_DATA:
36322 			case SCHEMA_ONLY:
36323 			case SORT_IN_TEMPDB:
36324 			case IGNORE_DUP_KEY:
36325 			case IMPLICIT_TRANSACTIONS:
36326 			case MAX_DURATION:
36327 			case MEMORY_OPTIMIZED:
36328 			case MIGRATION_STATE:
36329 			case PAD_INDEX:
36330 			case REMOTE_DATA_ARCHIVE:
36331 			case FILESTREAM_ON:
36332 			case FILETABLE_COLLATE_FILENAME:
36333 			case FILETABLE_DIRECTORY:
36334 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
36335 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
36336 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
36337 			case FILTER_PREDICATE:
36338 			case HISTORY_RETENTION_PERIOD:
36339 			case HISTORY_TABLE:
36340 			case LOCK_ESCALATION:
36341 			case DROP_EXISTING:
36342 			case ROW_NUMBER:
36343 			case FIRST:
36344 			case DATETIME2:
36345 			case OUTPUT:
36346 			case INSERTED:
36347 			case DELETED:
36348 			case FILENAME:
36349 			case MAXSIZE:
36350 			case FILEGROWTH:
36351 			case UNLIMITED:
36352 			case KB:
36353 			case MB:
36354 			case GB:
36355 			case TB:
36356 			case MEMORY_OPTIMIZED_DATA:
36357 			case FILEGROUP:
36358 			case NON_TRANSACTED_ACCESS:
36359 			case DB_CHAINING:
36360 			case TRUSTWORTHY:
36361 			case FORWARD_ONLY:
36362 			case KEYSET:
36363 			case FAST_FORWARD:
36364 			case SCROLL_LOCKS:
36365 			case OPTIMISTIC:
36366 			case TYPE_WARNING:
36367 			case SCHEMABINDING:
36368 			case CALLER:
36369 			case OWNER:
36370 			case SNAPSHOT:
36371 			case REPEATABLE:
36372 			case SERIALIZABLE:
36373 			case NATIVE_COMPILATION:
36374 			case VIEW_METADATA:
36375 			case INSTEAD:
36376 			case APPEND:
36377 			case INCREMENT:
36378 			case CACHE:
36379 			case MINVALUE:
36380 			case MAXVALUE:
36381 			case RESTART:
36382 			case LOB_COMPACTION:
36383 			case COMPRESS_ALL_ROW_GROUPS:
36384 			case REORGANIZE:
36385 			case RESUME:
36386 			case PAUSE:
36387 			case ABORT:
36388 			case ACCELERATED_DATABASE_RECOVERY:
36389 			case PERSISTENT_VERSION_STORE_FILEGROUP:
36390 			case IMMEDIATE:
36391 			case NO_WAIT:
36392 			case TARGET_RECOVERY_TIME:
36393 			case SECONDS:
36394 			case HONOR_BROKER_PRIORITY:
36395 			case ERROR_BROKER_CONVERSATIONS:
36396 			case NEW_BROKER:
36397 			case DISABLE_BROKER:
36398 			case ENABLE_BROKER:
36399 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
36400 			case READ_COMMITTED_SNAPSHOT:
36401 			case ALLOW_SNAPSHOT_ISOLATION:
36402 			case RECURSIVE_TRIGGERS:
36403 			case QUOTED_IDENTIFIER:
36404 			case NUMERIC_ROUNDABORT:
36405 			case CONCAT_NULL_YIELDS_NULL:
36406 			case COMPATIBILITY_LEVEL:
36407 			case ARITHABORT:
36408 			case ANSI_WARNINGS:
36409 			case ANSI_PADDING:
36410 			case ANSI_NULLS:
36411 			case ANSI_NULL_DEFAULT:
36412 			case PAGE_VERIFY:
36413 			case CHECKSUM:
36414 			case TORN_PAGE_DETECTION:
36415 			case BULK_LOGGED:
36416 			case RECOVERY:
36417 			case TOTAL_EXECUTION_CPU_TIME_MS:
36418 			case TOTAL_COMPILE_CPU_TIME_MS:
36419 			case STALE_CAPTURE_POLICY_THRESHOLD:
36420 			case EXECUTION_COUNT:
36421 			case QUERY_CAPTURE_POLICY:
36422 			case WAIT_STATS_CAPTURE_MODE:
36423 			case MAX_PLANS_PER_QUERY:
36424 			case QUERY_CAPTURE_MODE:
36425 			case SIZE_BASED_CLEANUP_MODE:
36426 			case INTERVAL_LENGTH_MINUTES:
36427 			case MAX_STORAGE_SIZE_MB:
36428 			case DATA_FLUSH_INTERVAL_SECONDS:
36429 			case CLEANUP_POLICY:
36430 			case CUSTOM:
36431 			case STALE_QUERY_THRESHOLD_DAYS:
36432 			case OPERATION_MODE:
36433 			case QUERY_STORE:
36434 			case CURSOR_DEFAULT:
36435 			case GLOBAL:
36436 			case CURSOR_CLOSE_ON_COMMIT:
36437 			case HOURS:
36438 			case CHANGE_RETENTION:
36439 			case AUTO_CLEANUP:
36440 			case CHANGE_TRACKING:
36441 			case AUTOMATIC_TUNING:
36442 			case FORCE_LAST_GOOD_PLAN:
36443 			case AUTO_UPDATE_STATISTICS_ASYNC:
36444 			case AUTO_UPDATE_STATISTICS:
36445 			case AUTO_SHRINK:
36446 			case AUTO_CREATE_STATISTICS:
36447 			case INCREMENTAL:
36448 			case AUTO_CLOSE:
36449 			case DATA_RETENTION:
36450 			case TEMPORAL_HISTORY_RETENTION:
36451 			case EDITION:
36452 			case MIXED_PAGE_ALLOCATION:
36453 			case DISABLED:
36454 			case ALLOWED:
36455 			case HADR:
36456 			case MULTI_USER:
36457 			case RESTRICTED_USER:
36458 			case SINGLE_USER:
36459 			case OFFLINE:
36460 			case EMERGENCY:
36461 			case SUSPEND:
36462 			case DATE_CORRELATION_OPTIMIZATION:
36463 			case ELASTIC_POOL:
36464 			case SERVICE_OBJECTIVE:
36465 			case DATABASE_NAME:
36466 			case ALLOW_CONNECTIONS:
36467 			case GEO:
36468 			case NAMED:
36469 			case DATEFIRST:
36470 			case BACKUP_STORAGE_REDUNDANCY:
36471 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
36472 			case SECONDARY:
36473 			case FAILOVER:
36474 			case DEFAULT_FULLTEXT_LANGUAGE:
36475 			case DEFAULT_LANGUAGE:
36476 			case INLINE:
36477 			case NESTED_TRIGGERS:
36478 			case TRANSFORM_NOISE_WORDS:
36479 			case TWO_DIGIT_YEAR_CUTOFF:
36480 			case PERSISTENT_LOG_BUFFER:
36481 			case DIRECTORY_NAME:
36482 			case DATEFORMAT:
36483 			case DELAYED_DURABILITY:
36484 			case AUTHORIZATION:
36485 			case TRANSFER:
36486 			case PROVIDER:
36487 			case SEARCH:
36488 			case MEMBER:
36489 			case IDENTIFIER_:
36490 			case DELIMITED_IDENTIFIER_:
36491 				enterOuterAlt(_localctx, 1);
36492 				{
36493 				setState(5021);
36494 				multipleTableNames();
36495 				setState(5022);
36496 				match(FROM);
36497 				setState(5023);
36498 				tableReferences();
36499 				}
36500 				break;
36501 			case FROM:
36502 				enterOuterAlt(_localctx, 2);
36503 				{
36504 				setState(5025);
36505 				match(FROM);
36506 				setState(5026);
36507 				multipleTableNames();
36508 				setState(5027);
36509 				match(USING);
36510 				setState(5028);
36511 				tableReferences();
36512 				}
36513 				break;
36514 			default:
36515 				throw new NoViableAltException(this);
36516 			}
36517 		}
36518 		catch (RecognitionException re) {
36519 			_localctx.exception = re;
36520 			_errHandler.reportError(this, re);
36521 			_errHandler.recover(this, re);
36522 		}
36523 		finally {
36524 			exitRule();
36525 		}
36526 		return _localctx;
36527 	}
36528 
36529 	public static class MultipleTableNamesContext extends ParserRuleContext {
36530 		public List<TableNameContext> tableName() {
36531 			return getRuleContexts(TableNameContext.class);
36532 		}
36533 		public TableNameContext tableName(int i) {
36534 			return getRuleContext(TableNameContext.class,i);
36535 		}
36536 		public List<TerminalNode> DOT_ASTERISK_() { return getTokens(SQLServerStatementParser.DOT_ASTERISK_); }
36537 		public TerminalNode DOT_ASTERISK_(int i) {
36538 			return getToken(SQLServerStatementParser.DOT_ASTERISK_, i);
36539 		}
36540 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36541 		public TerminalNode COMMA_(int i) {
36542 			return getToken(SQLServerStatementParser.COMMA_, i);
36543 		}
36544 		public MultipleTableNamesContext(ParserRuleContext parent, int invokingState) {
36545 			super(parent, invokingState);
36546 		}
36547 		@Override public int getRuleIndex() { return RULE_multipleTableNames; }
36548 		@Override
36549 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36550 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTableNames(this);
36551 			else return visitor.visitChildren(this);
36552 		}
36553 	}
36554 
36555 	public final MultipleTableNamesContext multipleTableNames() throws RecognitionException {
36556 		MultipleTableNamesContext _localctx = new MultipleTableNamesContext(_ctx, getState());
36557 		enterRule(_localctx, 698, RULE_multipleTableNames);
36558 		int _la;
36559 		try {
36560 			enterOuterAlt(_localctx, 1);
36561 			{
36562 			setState(5032);
36563 			tableName();
36564 			setState(5034);
36565 			_errHandler.sync(this);
36566 			_la = _input.LA(1);
36567 			if (_la==DOT_ASTERISK_) {
36568 				{
36569 				setState(5033);
36570 				match(DOT_ASTERISK_);
36571 				}
36572 			}
36573 
36574 			setState(5043);
36575 			_errHandler.sync(this);
36576 			_la = _input.LA(1);
36577 			while (_la==COMMA_) {
36578 				{
36579 				{
36580 				setState(5036);
36581 				match(COMMA_);
36582 				setState(5037);
36583 				tableName();
36584 				setState(5039);
36585 				_errHandler.sync(this);
36586 				_la = _input.LA(1);
36587 				if (_la==DOT_ASTERISK_) {
36588 					{
36589 					setState(5038);
36590 					match(DOT_ASTERISK_);
36591 					}
36592 				}
36593 
36594 				}
36595 				}
36596 				setState(5045);
36597 				_errHandler.sync(this);
36598 				_la = _input.LA(1);
36599 			}
36600 			}
36601 		}
36602 		catch (RecognitionException re) {
36603 			_localctx.exception = re;
36604 			_errHandler.reportError(this, re);
36605 			_errHandler.recover(this, re);
36606 		}
36607 		finally {
36608 			exitRule();
36609 		}
36610 		return _localctx;
36611 	}
36612 
36613 	public static class SelectContext extends ParserRuleContext {
36614 		public AggregationClauseContext aggregationClause() {
36615 			return getRuleContext(AggregationClauseContext.class,0);
36616 		}
36617 		public SelectContext(ParserRuleContext parent, int invokingState) {
36618 			super(parent, invokingState);
36619 		}
36620 		@Override public int getRuleIndex() { return RULE_select; }
36621 		@Override
36622 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36623 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelect(this);
36624 			else return visitor.visitChildren(this);
36625 		}
36626 	}
36627 
36628 	public final SelectContext select() throws RecognitionException {
36629 		SelectContext _localctx = new SelectContext(_ctx, getState());
36630 		enterRule(_localctx, 700, RULE_select);
36631 		try {
36632 			enterOuterAlt(_localctx, 1);
36633 			{
36634 			setState(5046);
36635 			aggregationClause();
36636 			}
36637 		}
36638 		catch (RecognitionException re) {
36639 			_localctx.exception = re;
36640 			_errHandler.reportError(this, re);
36641 			_errHandler.recover(this, re);
36642 		}
36643 		finally {
36644 			exitRule();
36645 		}
36646 		return _localctx;
36647 	}
36648 
36649 	public static class AggregationClauseContext extends ParserRuleContext {
36650 		public List<SelectClauseContext> selectClause() {
36651 			return getRuleContexts(SelectClauseContext.class);
36652 		}
36653 		public SelectClauseContext selectClause(int i) {
36654 			return getRuleContext(SelectClauseContext.class,i);
36655 		}
36656 		public List<TerminalNode> UNION() { return getTokens(SQLServerStatementParser.UNION); }
36657 		public TerminalNode UNION(int i) {
36658 			return getToken(SQLServerStatementParser.UNION, i);
36659 		}
36660 		public List<TerminalNode> EXCEPT() { return getTokens(SQLServerStatementParser.EXCEPT); }
36661 		public TerminalNode EXCEPT(int i) {
36662 			return getToken(SQLServerStatementParser.EXCEPT, i);
36663 		}
36664 		public List<TerminalNode> INTERSECT() { return getTokens(SQLServerStatementParser.INTERSECT); }
36665 		public TerminalNode INTERSECT(int i) {
36666 			return getToken(SQLServerStatementParser.INTERSECT, i);
36667 		}
36668 		public List<TerminalNode> ALL() { return getTokens(SQLServerStatementParser.ALL); }
36669 		public TerminalNode ALL(int i) {
36670 			return getToken(SQLServerStatementParser.ALL, i);
36671 		}
36672 		public AggregationClauseContext(ParserRuleContext parent, int invokingState) {
36673 			super(parent, invokingState);
36674 		}
36675 		@Override public int getRuleIndex() { return RULE_aggregationClause; }
36676 		@Override
36677 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36678 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationClause(this);
36679 			else return visitor.visitChildren(this);
36680 		}
36681 	}
36682 
36683 	public final AggregationClauseContext aggregationClause() throws RecognitionException {
36684 		AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState());
36685 		enterRule(_localctx, 702, RULE_aggregationClause);
36686 		int _la;
36687 		try {
36688 			enterOuterAlt(_localctx, 1);
36689 			{
36690 			setState(5048);
36691 			selectClause();
36692 			setState(5060);
36693 			_errHandler.sync(this);
36694 			_la = _input.LA(1);
36695 			while (_la==UNION || _la==EXCEPT || _la==INTERSECT) {
36696 				{
36697 				{
36698 				setState(5055);
36699 				_errHandler.sync(this);
36700 				switch (_input.LA(1)) {
36701 				case UNION:
36702 					{
36703 					setState(5049);
36704 					match(UNION);
36705 					setState(5051);
36706 					_errHandler.sync(this);
36707 					_la = _input.LA(1);
36708 					if (_la==ALL) {
36709 						{
36710 						setState(5050);
36711 						match(ALL);
36712 						}
36713 					}
36714 
36715 					}
36716 					break;
36717 				case EXCEPT:
36718 					{
36719 					setState(5053);
36720 					match(EXCEPT);
36721 					}
36722 					break;
36723 				case INTERSECT:
36724 					{
36725 					setState(5054);
36726 					match(INTERSECT);
36727 					}
36728 					break;
36729 				default:
36730 					throw new NoViableAltException(this);
36731 				}
36732 				setState(5057);
36733 				selectClause();
36734 				}
36735 				}
36736 				setState(5062);
36737 				_errHandler.sync(this);
36738 				_la = _input.LA(1);
36739 			}
36740 			}
36741 		}
36742 		catch (RecognitionException re) {
36743 			_localctx.exception = re;
36744 			_errHandler.reportError(this, re);
36745 			_errHandler.recover(this, re);
36746 		}
36747 		finally {
36748 			exitRule();
36749 		}
36750 		return _localctx;
36751 	}
36752 
36753 	public static class SelectClauseContext extends ParserRuleContext {
36754 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
36755 		public ProjectionsContext projections() {
36756 			return getRuleContext(ProjectionsContext.class,0);
36757 		}
36758 		public SelectWithClauseContext selectWithClause() {
36759 			return getRuleContext(SelectWithClauseContext.class,0);
36760 		}
36761 		public DuplicateSpecificationContext duplicateSpecification() {
36762 			return getRuleContext(DuplicateSpecificationContext.class,0);
36763 		}
36764 		public FromClauseContext fromClause() {
36765 			return getRuleContext(FromClauseContext.class,0);
36766 		}
36767 		public WhereClauseContext whereClause() {
36768 			return getRuleContext(WhereClauseContext.class,0);
36769 		}
36770 		public GroupByClauseContext groupByClause() {
36771 			return getRuleContext(GroupByClauseContext.class,0);
36772 		}
36773 		public HavingClauseContext havingClause() {
36774 			return getRuleContext(HavingClauseContext.class,0);
36775 		}
36776 		public OrderByClauseContext orderByClause() {
36777 			return getRuleContext(OrderByClauseContext.class,0);
36778 		}
36779 		public ForClauseContext forClause() {
36780 			return getRuleContext(ForClauseContext.class,0);
36781 		}
36782 		public SelectClauseContext(ParserRuleContext parent, int invokingState) {
36783 			super(parent, invokingState);
36784 		}
36785 		@Override public int getRuleIndex() { return RULE_selectClause; }
36786 		@Override
36787 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36788 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectClause(this);
36789 			else return visitor.visitChildren(this);
36790 		}
36791 	}
36792 
36793 	public final SelectClauseContext selectClause() throws RecognitionException {
36794 		SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState());
36795 		enterRule(_localctx, 704, RULE_selectClause);
36796 		int _la;
36797 		try {
36798 			enterOuterAlt(_localctx, 1);
36799 			{
36800 			setState(5064);
36801 			_errHandler.sync(this);
36802 			_la = _input.LA(1);
36803 			if (_la==WITH) {
36804 				{
36805 				setState(5063);
36806 				selectWithClause();
36807 				}
36808 			}
36809 
36810 			setState(5066);
36811 			match(SELECT);
36812 			setState(5068);
36813 			_errHandler.sync(this);
36814 			_la = _input.LA(1);
36815 			if (_la==DISTINCT || _la==ALL) {
36816 				{
36817 				setState(5067);
36818 				duplicateSpecification();
36819 				}
36820 			}
36821 
36822 			setState(5070);
36823 			projections();
36824 			setState(5072);
36825 			_errHandler.sync(this);
36826 			_la = _input.LA(1);
36827 			if (_la==FROM) {
36828 				{
36829 				setState(5071);
36830 				fromClause();
36831 				}
36832 			}
36833 
36834 			setState(5075);
36835 			_errHandler.sync(this);
36836 			_la = _input.LA(1);
36837 			if (_la==WHERE) {
36838 				{
36839 				setState(5074);
36840 				whereClause();
36841 				}
36842 			}
36843 
36844 			setState(5078);
36845 			_errHandler.sync(this);
36846 			_la = _input.LA(1);
36847 			if (_la==GROUP) {
36848 				{
36849 				setState(5077);
36850 				groupByClause();
36851 				}
36852 			}
36853 
36854 			setState(5081);
36855 			_errHandler.sync(this);
36856 			_la = _input.LA(1);
36857 			if (_la==HAVING) {
36858 				{
36859 				setState(5080);
36860 				havingClause();
36861 				}
36862 			}
36863 
36864 			setState(5084);
36865 			_errHandler.sync(this);
36866 			_la = _input.LA(1);
36867 			if (_la==ORDER) {
36868 				{
36869 				setState(5083);
36870 				orderByClause();
36871 				}
36872 			}
36873 
36874 			setState(5087);
36875 			_errHandler.sync(this);
36876 			switch ( getInterpreter().adaptivePredict(_input,571,_ctx) ) {
36877 			case 1:
36878 				{
36879 				setState(5086);
36880 				forClause();
36881 				}
36882 				break;
36883 			}
36884 			}
36885 		}
36886 		catch (RecognitionException re) {
36887 			_localctx.exception = re;
36888 			_errHandler.reportError(this, re);
36889 			_errHandler.recover(this, re);
36890 		}
36891 		finally {
36892 			exitRule();
36893 		}
36894 		return _localctx;
36895 	}
36896 
36897 	public static class DuplicateSpecificationContext extends ParserRuleContext {
36898 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
36899 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
36900 		public DuplicateSpecificationContext(ParserRuleContext parent, int invokingState) {
36901 			super(parent, invokingState);
36902 		}
36903 		@Override public int getRuleIndex() { return RULE_duplicateSpecification; }
36904 		@Override
36905 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36906 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDuplicateSpecification(this);
36907 			else return visitor.visitChildren(this);
36908 		}
36909 	}
36910 
36911 	public final DuplicateSpecificationContext duplicateSpecification() throws RecognitionException {
36912 		DuplicateSpecificationContext _localctx = new DuplicateSpecificationContext(_ctx, getState());
36913 		enterRule(_localctx, 706, RULE_duplicateSpecification);
36914 		int _la;
36915 		try {
36916 			enterOuterAlt(_localctx, 1);
36917 			{
36918 			setState(5089);
36919 			_la = _input.LA(1);
36920 			if ( !(_la==DISTINCT || _la==ALL) ) {
36921 			_errHandler.recoverInline(this);
36922 			}
36923 			else {
36924 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
36925 				_errHandler.reportMatch(this);
36926 				consume();
36927 			}
36928 			}
36929 		}
36930 		catch (RecognitionException re) {
36931 			_localctx.exception = re;
36932 			_errHandler.reportError(this, re);
36933 			_errHandler.recover(this, re);
36934 		}
36935 		finally {
36936 			exitRule();
36937 		}
36938 		return _localctx;
36939 	}
36940 
36941 	public static class ProjectionsContext extends ParserRuleContext {
36942 		public List<ProjectionContext> projection() {
36943 			return getRuleContexts(ProjectionContext.class);
36944 		}
36945 		public ProjectionContext projection(int i) {
36946 			return getRuleContext(ProjectionContext.class,i);
36947 		}
36948 		public TopContext top() {
36949 			return getRuleContext(TopContext.class,0);
36950 		}
36951 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36952 		public TerminalNode COMMA_(int i) {
36953 			return getToken(SQLServerStatementParser.COMMA_, i);
36954 		}
36955 		public ProjectionsContext(ParserRuleContext parent, int invokingState) {
36956 			super(parent, invokingState);
36957 		}
36958 		@Override public int getRuleIndex() { return RULE_projections; }
36959 		@Override
36960 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36961 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjections(this);
36962 			else return visitor.visitChildren(this);
36963 		}
36964 	}
36965 
36966 	public final ProjectionsContext projections() throws RecognitionException {
36967 		ProjectionsContext _localctx = new ProjectionsContext(_ctx, getState());
36968 		enterRule(_localctx, 708, RULE_projections);
36969 		int _la;
36970 		try {
36971 			enterOuterAlt(_localctx, 1);
36972 			{
36973 			setState(5096);
36974 			_errHandler.sync(this);
36975 			switch ( getInterpreter().adaptivePredict(_input,573,_ctx) ) {
36976 			case 1:
36977 				{
36978 				setState(5091);
36979 				projection();
36980 				}
36981 				break;
36982 			case 2:
36983 				{
36984 				setState(5092);
36985 				top();
36986 				setState(5094);
36987 				_errHandler.sync(this);
36988 				switch ( getInterpreter().adaptivePredict(_input,572,_ctx) ) {
36989 				case 1:
36990 					{
36991 					setState(5093);
36992 					projection();
36993 					}
36994 					break;
36995 				}
36996 				}
36997 				break;
36998 			}
36999 			setState(5102);
37000 			_errHandler.sync(this);
37001 			_la = _input.LA(1);
37002 			while (_la==COMMA_) {
37003 				{
37004 				{
37005 				setState(5098);
37006 				match(COMMA_);
37007 				setState(5099);
37008 				projection();
37009 				}
37010 				}
37011 				setState(5104);
37012 				_errHandler.sync(this);
37013 				_la = _input.LA(1);
37014 			}
37015 			}
37016 		}
37017 		catch (RecognitionException re) {
37018 			_localctx.exception = re;
37019 			_errHandler.reportError(this, re);
37020 			_errHandler.recover(this, re);
37021 		}
37022 		finally {
37023 			exitRule();
37024 		}
37025 		return _localctx;
37026 	}
37027 
37028 	public static class ProjectionContext extends ParserRuleContext {
37029 		public QualifiedShorthandContext qualifiedShorthand() {
37030 			return getRuleContext(QualifiedShorthandContext.class,0);
37031 		}
37032 		public UnqualifiedShorthandContext unqualifiedShorthand() {
37033 			return getRuleContext(UnqualifiedShorthandContext.class,0);
37034 		}
37035 		public ColumnNameContext columnName() {
37036 			return getRuleContext(ColumnNameContext.class,0);
37037 		}
37038 		public ExprContext expr() {
37039 			return getRuleContext(ExprContext.class,0);
37040 		}
37041 		public AliasContext alias() {
37042 			return getRuleContext(AliasContext.class,0);
37043 		}
37044 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
37045 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37046 		public ProjectionContext(ParserRuleContext parent, int invokingState) {
37047 			super(parent, invokingState);
37048 		}
37049 		@Override public int getRuleIndex() { return RULE_projection; }
37050 		@Override
37051 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37052 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjection(this);
37053 			else return visitor.visitChildren(this);
37054 		}
37055 	}
37056 
37057 	public final ProjectionContext projection() throws RecognitionException {
37058 		ProjectionContext _localctx = new ProjectionContext(_ctx, getState());
37059 		enterRule(_localctx, 710, RULE_projection);
37060 		int _la;
37061 		try {
37062 			setState(5126);
37063 			_errHandler.sync(this);
37064 			switch ( getInterpreter().adaptivePredict(_input,580,_ctx) ) {
37065 			case 1:
37066 				enterOuterAlt(_localctx, 1);
37067 				{
37068 				setState(5105);
37069 				qualifiedShorthand();
37070 				}
37071 				break;
37072 			case 2:
37073 				enterOuterAlt(_localctx, 2);
37074 				{
37075 				setState(5106);
37076 				unqualifiedShorthand();
37077 				}
37078 				break;
37079 			case 3:
37080 				enterOuterAlt(_localctx, 3);
37081 				{
37082 				setState(5110);
37083 				_errHandler.sync(this);
37084 				switch ( getInterpreter().adaptivePredict(_input,575,_ctx) ) {
37085 				case 1:
37086 					{
37087 					setState(5107);
37088 					alias();
37089 					setState(5108);
37090 					match(EQ_);
37091 					}
37092 					break;
37093 				}
37094 				setState(5114);
37095 				_errHandler.sync(this);
37096 				switch ( getInterpreter().adaptivePredict(_input,576,_ctx) ) {
37097 				case 1:
37098 					{
37099 					setState(5112);
37100 					columnName();
37101 					}
37102 					break;
37103 				case 2:
37104 					{
37105 					setState(5113);
37106 					expr(0);
37107 					}
37108 					break;
37109 				}
37110 				}
37111 				break;
37112 			case 4:
37113 				enterOuterAlt(_localctx, 4);
37114 				{
37115 				setState(5118);
37116 				_errHandler.sync(this);
37117 				switch ( getInterpreter().adaptivePredict(_input,577,_ctx) ) {
37118 				case 1:
37119 					{
37120 					setState(5116);
37121 					columnName();
37122 					}
37123 					break;
37124 				case 2:
37125 					{
37126 					setState(5117);
37127 					expr(0);
37128 					}
37129 					break;
37130 				}
37131 				setState(5124);
37132 				_errHandler.sync(this);
37133 				switch ( getInterpreter().adaptivePredict(_input,579,_ctx) ) {
37134 				case 1:
37135 					{
37136 					setState(5121);
37137 					_errHandler.sync(this);
37138 					_la = _input.LA(1);
37139 					if (_la==AS) {
37140 						{
37141 						setState(5120);
37142 						match(AS);
37143 						}
37144 					}
37145 
37146 					setState(5123);
37147 					alias();
37148 					}
37149 					break;
37150 				}
37151 				}
37152 				break;
37153 			}
37154 		}
37155 		catch (RecognitionException re) {
37156 			_localctx.exception = re;
37157 			_errHandler.reportError(this, re);
37158 			_errHandler.recover(this, re);
37159 		}
37160 		finally {
37161 			exitRule();
37162 		}
37163 		return _localctx;
37164 	}
37165 
37166 	public static class TopContext extends ParserRuleContext {
37167 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
37168 		public TopNumContext topNum() {
37169 			return getRuleContext(TopNumContext.class,0);
37170 		}
37171 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
37172 		public TerminalNode LP_(int i) {
37173 			return getToken(SQLServerStatementParser.LP_, i);
37174 		}
37175 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
37176 		public TerminalNode RP_(int i) {
37177 			return getToken(SQLServerStatementParser.RP_, i);
37178 		}
37179 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
37180 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
37181 		public TerminalNode TIES() { return getToken(SQLServerStatementParser.TIES, 0); }
37182 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
37183 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
37184 		public OrderByClauseContext orderByClause() {
37185 			return getRuleContext(OrderByClauseContext.class,0);
37186 		}
37187 		public AliasContext alias() {
37188 			return getRuleContext(AliasContext.class,0);
37189 		}
37190 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37191 		public TopContext(ParserRuleContext parent, int invokingState) {
37192 			super(parent, invokingState);
37193 		}
37194 		@Override public int getRuleIndex() { return RULE_top; }
37195 		@Override
37196 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37197 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTop(this);
37198 			else return visitor.visitChildren(this);
37199 		}
37200 	}
37201 
37202 	public final TopContext top() throws RecognitionException {
37203 		TopContext _localctx = new TopContext(_ctx, getState());
37204 		enterRule(_localctx, 712, RULE_top);
37205 		int _la;
37206 		try {
37207 			enterOuterAlt(_localctx, 1);
37208 			{
37209 			setState(5128);
37210 			match(TOP);
37211 			setState(5130);
37212 			_errHandler.sync(this);
37213 			_la = _input.LA(1);
37214 			if (_la==LP_) {
37215 				{
37216 				setState(5129);
37217 				match(LP_);
37218 				}
37219 			}
37220 
37221 			setState(5132);
37222 			topNum();
37223 			setState(5134);
37224 			_errHandler.sync(this);
37225 			switch ( getInterpreter().adaptivePredict(_input,582,_ctx) ) {
37226 			case 1:
37227 				{
37228 				setState(5133);
37229 				match(RP_);
37230 				}
37231 				break;
37232 			}
37233 			setState(5137);
37234 			_errHandler.sync(this);
37235 			_la = _input.LA(1);
37236 			if (_la==PERCENT) {
37237 				{
37238 				setState(5136);
37239 				match(PERCENT);
37240 				}
37241 			}
37242 
37243 			setState(5141);
37244 			_errHandler.sync(this);
37245 			switch ( getInterpreter().adaptivePredict(_input,584,_ctx) ) {
37246 			case 1:
37247 				{
37248 				setState(5139);
37249 				match(WITH);
37250 				setState(5140);
37251 				match(TIES);
37252 				}
37253 				break;
37254 			}
37255 			setState(5156);
37256 			_errHandler.sync(this);
37257 			switch ( getInterpreter().adaptivePredict(_input,587,_ctx) ) {
37258 			case 1:
37259 				{
37260 				setState(5143);
37261 				match(ROW_NUMBER);
37262 				setState(5144);
37263 				match(LP_);
37264 				setState(5145);
37265 				match(RP_);
37266 				setState(5146);
37267 				match(OVER);
37268 				setState(5147);
37269 				match(LP_);
37270 				setState(5148);
37271 				orderByClause();
37272 				setState(5149);
37273 				match(RP_);
37274 				setState(5154);
37275 				_errHandler.sync(this);
37276 				switch ( getInterpreter().adaptivePredict(_input,586,_ctx) ) {
37277 				case 1:
37278 					{
37279 					setState(5151);
37280 					_errHandler.sync(this);
37281 					_la = _input.LA(1);
37282 					if (_la==AS) {
37283 						{
37284 						setState(5150);
37285 						match(AS);
37286 						}
37287 					}
37288 
37289 					setState(5153);
37290 					alias();
37291 					}
37292 					break;
37293 				}
37294 				}
37295 				break;
37296 			}
37297 			}
37298 		}
37299 		catch (RecognitionException re) {
37300 			_localctx.exception = re;
37301 			_errHandler.reportError(this, re);
37302 			_errHandler.recover(this, re);
37303 		}
37304 		finally {
37305 			exitRule();
37306 		}
37307 		return _localctx;
37308 	}
37309 
37310 	public static class TopNumContext extends ParserRuleContext {
37311 		public NumberLiteralsContext numberLiterals() {
37312 			return getRuleContext(NumberLiteralsContext.class,0);
37313 		}
37314 		public ParameterMarkerContext parameterMarker() {
37315 			return getRuleContext(ParameterMarkerContext.class,0);
37316 		}
37317 		public TopNumContext(ParserRuleContext parent, int invokingState) {
37318 			super(parent, invokingState);
37319 		}
37320 		@Override public int getRuleIndex() { return RULE_topNum; }
37321 		@Override
37322 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37323 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTopNum(this);
37324 			else return visitor.visitChildren(this);
37325 		}
37326 	}
37327 
37328 	public final TopNumContext topNum() throws RecognitionException {
37329 		TopNumContext _localctx = new TopNumContext(_ctx, getState());
37330 		enterRule(_localctx, 714, RULE_topNum);
37331 		try {
37332 			setState(5160);
37333 			_errHandler.sync(this);
37334 			switch (_input.LA(1)) {
37335 			case PLUS_:
37336 			case MINUS_:
37337 			case NUMBER_:
37338 				enterOuterAlt(_localctx, 1);
37339 				{
37340 				setState(5158);
37341 				numberLiterals();
37342 				}
37343 				break;
37344 			case QUESTION_:
37345 				enterOuterAlt(_localctx, 2);
37346 				{
37347 				setState(5159);
37348 				parameterMarker();
37349 				}
37350 				break;
37351 			default:
37352 				throw new NoViableAltException(this);
37353 			}
37354 		}
37355 		catch (RecognitionException re) {
37356 			_localctx.exception = re;
37357 			_errHandler.reportError(this, re);
37358 			_errHandler.recover(this, re);
37359 		}
37360 		finally {
37361 			exitRule();
37362 		}
37363 		return _localctx;
37364 	}
37365 
37366 	public static class UnqualifiedShorthandContext extends ParserRuleContext {
37367 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
37368 		public UnqualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
37369 			super(parent, invokingState);
37370 		}
37371 		@Override public int getRuleIndex() { return RULE_unqualifiedShorthand; }
37372 		@Override
37373 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37374 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnqualifiedShorthand(this);
37375 			else return visitor.visitChildren(this);
37376 		}
37377 	}
37378 
37379 	public final UnqualifiedShorthandContext unqualifiedShorthand() throws RecognitionException {
37380 		UnqualifiedShorthandContext _localctx = new UnqualifiedShorthandContext(_ctx, getState());
37381 		enterRule(_localctx, 716, RULE_unqualifiedShorthand);
37382 		try {
37383 			enterOuterAlt(_localctx, 1);
37384 			{
37385 			setState(5162);
37386 			match(ASTERISK_);
37387 			}
37388 		}
37389 		catch (RecognitionException re) {
37390 			_localctx.exception = re;
37391 			_errHandler.reportError(this, re);
37392 			_errHandler.recover(this, re);
37393 		}
37394 		finally {
37395 			exitRule();
37396 		}
37397 		return _localctx;
37398 	}
37399 
37400 	public static class QualifiedShorthandContext extends ParserRuleContext {
37401 		public IdentifierContext identifier() {
37402 			return getRuleContext(IdentifierContext.class,0);
37403 		}
37404 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
37405 		public QualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
37406 			super(parent, invokingState);
37407 		}
37408 		@Override public int getRuleIndex() { return RULE_qualifiedShorthand; }
37409 		@Override
37410 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37411 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQualifiedShorthand(this);
37412 			else return visitor.visitChildren(this);
37413 		}
37414 	}
37415 
37416 	public final QualifiedShorthandContext qualifiedShorthand() throws RecognitionException {
37417 		QualifiedShorthandContext _localctx = new QualifiedShorthandContext(_ctx, getState());
37418 		enterRule(_localctx, 718, RULE_qualifiedShorthand);
37419 		try {
37420 			enterOuterAlt(_localctx, 1);
37421 			{
37422 			setState(5164);
37423 			identifier();
37424 			setState(5165);
37425 			match(DOT_ASTERISK_);
37426 			}
37427 		}
37428 		catch (RecognitionException re) {
37429 			_localctx.exception = re;
37430 			_errHandler.reportError(this, re);
37431 			_errHandler.recover(this, re);
37432 		}
37433 		finally {
37434 			exitRule();
37435 		}
37436 		return _localctx;
37437 	}
37438 
37439 	public static class FromClauseContext extends ParserRuleContext {
37440 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
37441 		public TableReferencesContext tableReferences() {
37442 			return getRuleContext(TableReferencesContext.class,0);
37443 		}
37444 		public FromClauseContext(ParserRuleContext parent, int invokingState) {
37445 			super(parent, invokingState);
37446 		}
37447 		@Override public int getRuleIndex() { return RULE_fromClause; }
37448 		@Override
37449 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37450 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFromClause(this);
37451 			else return visitor.visitChildren(this);
37452 		}
37453 	}
37454 
37455 	public final FromClauseContext fromClause() throws RecognitionException {
37456 		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
37457 		enterRule(_localctx, 720, RULE_fromClause);
37458 		try {
37459 			enterOuterAlt(_localctx, 1);
37460 			{
37461 			setState(5167);
37462 			match(FROM);
37463 			setState(5168);
37464 			tableReferences();
37465 			}
37466 		}
37467 		catch (RecognitionException re) {
37468 			_localctx.exception = re;
37469 			_errHandler.reportError(this, re);
37470 			_errHandler.recover(this, re);
37471 		}
37472 		finally {
37473 			exitRule();
37474 		}
37475 		return _localctx;
37476 	}
37477 
37478 	public static class TableReferencesContext extends ParserRuleContext {
37479 		public List<TableReferenceContext> tableReference() {
37480 			return getRuleContexts(TableReferenceContext.class);
37481 		}
37482 		public TableReferenceContext tableReference(int i) {
37483 			return getRuleContext(TableReferenceContext.class,i);
37484 		}
37485 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37486 		public TerminalNode COMMA_(int i) {
37487 			return getToken(SQLServerStatementParser.COMMA_, i);
37488 		}
37489 		public TableReferencesContext(ParserRuleContext parent, int invokingState) {
37490 			super(parent, invokingState);
37491 		}
37492 		@Override public int getRuleIndex() { return RULE_tableReferences; }
37493 		@Override
37494 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37495 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReferences(this);
37496 			else return visitor.visitChildren(this);
37497 		}
37498 	}
37499 
37500 	public final TableReferencesContext tableReferences() throws RecognitionException {
37501 		TableReferencesContext _localctx = new TableReferencesContext(_ctx, getState());
37502 		enterRule(_localctx, 722, RULE_tableReferences);
37503 		int _la;
37504 		try {
37505 			enterOuterAlt(_localctx, 1);
37506 			{
37507 			setState(5170);
37508 			tableReference();
37509 			setState(5175);
37510 			_errHandler.sync(this);
37511 			_la = _input.LA(1);
37512 			while (_la==COMMA_) {
37513 				{
37514 				{
37515 				setState(5171);
37516 				match(COMMA_);
37517 				setState(5172);
37518 				tableReference();
37519 				}
37520 				}
37521 				setState(5177);
37522 				_errHandler.sync(this);
37523 				_la = _input.LA(1);
37524 			}
37525 			}
37526 		}
37527 		catch (RecognitionException re) {
37528 			_localctx.exception = re;
37529 			_errHandler.reportError(this, re);
37530 			_errHandler.recover(this, re);
37531 		}
37532 		finally {
37533 			exitRule();
37534 		}
37535 		return _localctx;
37536 	}
37537 
37538 	public static class TableReferenceContext extends ParserRuleContext {
37539 		public TableFactorContext tableFactor() {
37540 			return getRuleContext(TableFactorContext.class,0);
37541 		}
37542 		public List<JoinedTableContext> joinedTable() {
37543 			return getRuleContexts(JoinedTableContext.class);
37544 		}
37545 		public JoinedTableContext joinedTable(int i) {
37546 			return getRuleContext(JoinedTableContext.class,i);
37547 		}
37548 		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
37549 			super(parent, invokingState);
37550 		}
37551 		@Override public int getRuleIndex() { return RULE_tableReference; }
37552 		@Override
37553 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37554 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReference(this);
37555 			else return visitor.visitChildren(this);
37556 		}
37557 	}
37558 
37559 	public final TableReferenceContext tableReference() throws RecognitionException {
37560 		TableReferenceContext _localctx = new TableReferenceContext(_ctx, getState());
37561 		enterRule(_localctx, 724, RULE_tableReference);
37562 		int _la;
37563 		try {
37564 			enterOuterAlt(_localctx, 1);
37565 			{
37566 			setState(5178);
37567 			tableFactor();
37568 			setState(5182);
37569 			_errHandler.sync(this);
37570 			_la = _input.LA(1);
37571 			while (((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (NATURAL - 86)) | (1L << (JOIN - 86)) | (1L << (FULL - 86)) | (1L << (INNER - 86)) | (1L << (OUTER - 86)) | (1L << (LEFT - 86)) | (1L << (RIGHT - 86)) | (1L << (CROSS - 86)))) != 0)) {
37572 				{
37573 				{
37574 				setState(5179);
37575 				joinedTable();
37576 				}
37577 				}
37578 				setState(5184);
37579 				_errHandler.sync(this);
37580 				_la = _input.LA(1);
37581 			}
37582 			}
37583 		}
37584 		catch (RecognitionException re) {
37585 			_localctx.exception = re;
37586 			_errHandler.reportError(this, re);
37587 			_errHandler.recover(this, re);
37588 		}
37589 		finally {
37590 			exitRule();
37591 		}
37592 		return _localctx;
37593 	}
37594 
37595 	public static class TableFactorContext extends ParserRuleContext {
37596 		public TableNameContext tableName() {
37597 			return getRuleContext(TableNameContext.class,0);
37598 		}
37599 		public AliasContext alias() {
37600 			return getRuleContext(AliasContext.class,0);
37601 		}
37602 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37603 		public SubqueryContext subquery() {
37604 			return getRuleContext(SubqueryContext.class,0);
37605 		}
37606 		public ColumnNamesContext columnNames() {
37607 			return getRuleContext(ColumnNamesContext.class,0);
37608 		}
37609 		public ExprContext expr() {
37610 			return getRuleContext(ExprContext.class,0);
37611 		}
37612 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
37613 		public TableReferencesContext tableReferences() {
37614 			return getRuleContext(TableReferencesContext.class,0);
37615 		}
37616 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
37617 		public TableFactorContext(ParserRuleContext parent, int invokingState) {
37618 			super(parent, invokingState);
37619 		}
37620 		@Override public int getRuleIndex() { return RULE_tableFactor; }
37621 		@Override
37622 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37623 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableFactor(this);
37624 			else return visitor.visitChildren(this);
37625 		}
37626 	}
37627 
37628 	public final TableFactorContext tableFactor() throws RecognitionException {
37629 		TableFactorContext _localctx = new TableFactorContext(_ctx, getState());
37630 		enterRule(_localctx, 726, RULE_tableFactor);
37631 		int _la;
37632 		try {
37633 			setState(5211);
37634 			_errHandler.sync(this);
37635 			switch ( getInterpreter().adaptivePredict(_input,597,_ctx) ) {
37636 			case 1:
37637 				enterOuterAlt(_localctx, 1);
37638 				{
37639 				setState(5185);
37640 				tableName();
37641 				setState(5190);
37642 				_errHandler.sync(this);
37643 				switch ( getInterpreter().adaptivePredict(_input,592,_ctx) ) {
37644 				case 1:
37645 					{
37646 					setState(5187);
37647 					_errHandler.sync(this);
37648 					_la = _input.LA(1);
37649 					if (_la==AS) {
37650 						{
37651 						setState(5186);
37652 						match(AS);
37653 						}
37654 					}
37655 
37656 					setState(5189);
37657 					alias();
37658 					}
37659 					break;
37660 				}
37661 				}
37662 				break;
37663 			case 2:
37664 				enterOuterAlt(_localctx, 2);
37665 				{
37666 				setState(5192);
37667 				subquery();
37668 				setState(5194);
37669 				_errHandler.sync(this);
37670 				_la = _input.LA(1);
37671 				if (_la==AS) {
37672 					{
37673 					setState(5193);
37674 					match(AS);
37675 					}
37676 				}
37677 
37678 				setState(5196);
37679 				alias();
37680 				setState(5198);
37681 				_errHandler.sync(this);
37682 				_la = _input.LA(1);
37683 				if (_la==LP_) {
37684 					{
37685 					setState(5197);
37686 					columnNames();
37687 					}
37688 				}
37689 
37690 				}
37691 				break;
37692 			case 3:
37693 				enterOuterAlt(_localctx, 3);
37694 				{
37695 				setState(5200);
37696 				expr(0);
37697 				setState(5205);
37698 				_errHandler.sync(this);
37699 				switch ( getInterpreter().adaptivePredict(_input,596,_ctx) ) {
37700 				case 1:
37701 					{
37702 					setState(5202);
37703 					_errHandler.sync(this);
37704 					_la = _input.LA(1);
37705 					if (_la==AS) {
37706 						{
37707 						setState(5201);
37708 						match(AS);
37709 						}
37710 					}
37711 
37712 					setState(5204);
37713 					alias();
37714 					}
37715 					break;
37716 				}
37717 				}
37718 				break;
37719 			case 4:
37720 				enterOuterAlt(_localctx, 4);
37721 				{
37722 				setState(5207);
37723 				match(LP_);
37724 				setState(5208);
37725 				tableReferences();
37726 				setState(5209);
37727 				match(RP_);
37728 				}
37729 				break;
37730 			}
37731 		}
37732 		catch (RecognitionException re) {
37733 			_localctx.exception = re;
37734 			_errHandler.reportError(this, re);
37735 			_errHandler.recover(this, re);
37736 		}
37737 		finally {
37738 			exitRule();
37739 		}
37740 		return _localctx;
37741 	}
37742 
37743 	public static class JoinedTableContext extends ParserRuleContext {
37744 		public TableFactorContext tableFactor() {
37745 			return getRuleContext(TableFactorContext.class,0);
37746 		}
37747 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
37748 		public TerminalNode NATURAL() { return getToken(SQLServerStatementParser.NATURAL, 0); }
37749 		public JoinSpecificationContext joinSpecification() {
37750 			return getRuleContext(JoinSpecificationContext.class,0);
37751 		}
37752 		public TerminalNode INNER() { return getToken(SQLServerStatementParser.INNER, 0); }
37753 		public TerminalNode CROSS() { return getToken(SQLServerStatementParser.CROSS, 0); }
37754 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
37755 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
37756 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
37757 		public TerminalNode OUTER() { return getToken(SQLServerStatementParser.OUTER, 0); }
37758 		public TerminalNode APPLY() { return getToken(SQLServerStatementParser.APPLY, 0); }
37759 		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
37760 			super(parent, invokingState);
37761 		}
37762 		@Override public int getRuleIndex() { return RULE_joinedTable; }
37763 		@Override
37764 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37765 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinedTable(this);
37766 			else return visitor.visitChildren(this);
37767 		}
37768 	}
37769 
37770 	public final JoinedTableContext joinedTable() throws RecognitionException {
37771 		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
37772 		enterRule(_localctx, 728, RULE_joinedTable);
37773 		int _la;
37774 		try {
37775 			setState(5243);
37776 			_errHandler.sync(this);
37777 			switch ( getInterpreter().adaptivePredict(_input,605,_ctx) ) {
37778 			case 1:
37779 				enterOuterAlt(_localctx, 1);
37780 				{
37781 				setState(5214);
37782 				_errHandler.sync(this);
37783 				_la = _input.LA(1);
37784 				if (_la==NATURAL) {
37785 					{
37786 					setState(5213);
37787 					match(NATURAL);
37788 					}
37789 				}
37790 
37791 				{
37792 				setState(5217);
37793 				_errHandler.sync(this);
37794 				_la = _input.LA(1);
37795 				if (_la==INNER || _la==CROSS) {
37796 					{
37797 					setState(5216);
37798 					_la = _input.LA(1);
37799 					if ( !(_la==INNER || _la==CROSS) ) {
37800 					_errHandler.recoverInline(this);
37801 					}
37802 					else {
37803 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37804 						_errHandler.reportMatch(this);
37805 						consume();
37806 					}
37807 					}
37808 				}
37809 
37810 				setState(5219);
37811 				match(JOIN);
37812 				}
37813 				setState(5221);
37814 				tableFactor();
37815 				setState(5223);
37816 				_errHandler.sync(this);
37817 				_la = _input.LA(1);
37818 				if (_la==USING || _la==ON) {
37819 					{
37820 					setState(5222);
37821 					joinSpecification();
37822 					}
37823 				}
37824 
37825 				}
37826 				break;
37827 			case 2:
37828 				enterOuterAlt(_localctx, 2);
37829 				{
37830 				setState(5226);
37831 				_errHandler.sync(this);
37832 				_la = _input.LA(1);
37833 				if (_la==NATURAL) {
37834 					{
37835 					setState(5225);
37836 					match(NATURAL);
37837 					}
37838 				}
37839 
37840 				setState(5228);
37841 				_la = _input.LA(1);
37842 				if ( !(((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & ((1L << (FULL - 88)) | (1L << (LEFT - 88)) | (1L << (RIGHT - 88)))) != 0)) ) {
37843 				_errHandler.recoverInline(this);
37844 				}
37845 				else {
37846 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37847 					_errHandler.reportMatch(this);
37848 					consume();
37849 				}
37850 				setState(5230);
37851 				_errHandler.sync(this);
37852 				_la = _input.LA(1);
37853 				if (_la==OUTER) {
37854 					{
37855 					setState(5229);
37856 					match(OUTER);
37857 					}
37858 				}
37859 
37860 				setState(5232);
37861 				match(JOIN);
37862 				setState(5233);
37863 				tableFactor();
37864 				setState(5235);
37865 				_errHandler.sync(this);
37866 				_la = _input.LA(1);
37867 				if (_la==USING || _la==ON) {
37868 					{
37869 					setState(5234);
37870 					joinSpecification();
37871 					}
37872 				}
37873 
37874 				}
37875 				break;
37876 			case 3:
37877 				enterOuterAlt(_localctx, 3);
37878 				{
37879 				setState(5237);
37880 				_la = _input.LA(1);
37881 				if ( !(_la==OUTER || _la==CROSS) ) {
37882 				_errHandler.recoverInline(this);
37883 				}
37884 				else {
37885 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37886 					_errHandler.reportMatch(this);
37887 					consume();
37888 				}
37889 				setState(5238);
37890 				match(APPLY);
37891 				setState(5239);
37892 				tableFactor();
37893 				setState(5241);
37894 				_errHandler.sync(this);
37895 				_la = _input.LA(1);
37896 				if (_la==USING || _la==ON) {
37897 					{
37898 					setState(5240);
37899 					joinSpecification();
37900 					}
37901 				}
37902 
37903 				}
37904 				break;
37905 			}
37906 		}
37907 		catch (RecognitionException re) {
37908 			_localctx.exception = re;
37909 			_errHandler.reportError(this, re);
37910 			_errHandler.recover(this, re);
37911 		}
37912 		finally {
37913 			exitRule();
37914 		}
37915 		return _localctx;
37916 	}
37917 
37918 	public static class JoinSpecificationContext extends ParserRuleContext {
37919 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
37920 		public ExprContext expr() {
37921 			return getRuleContext(ExprContext.class,0);
37922 		}
37923 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
37924 		public ColumnNamesContext columnNames() {
37925 			return getRuleContext(ColumnNamesContext.class,0);
37926 		}
37927 		public JoinSpecificationContext(ParserRuleContext parent, int invokingState) {
37928 			super(parent, invokingState);
37929 		}
37930 		@Override public int getRuleIndex() { return RULE_joinSpecification; }
37931 		@Override
37932 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37933 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinSpecification(this);
37934 			else return visitor.visitChildren(this);
37935 		}
37936 	}
37937 
37938 	public final JoinSpecificationContext joinSpecification() throws RecognitionException {
37939 		JoinSpecificationContext _localctx = new JoinSpecificationContext(_ctx, getState());
37940 		enterRule(_localctx, 730, RULE_joinSpecification);
37941 		try {
37942 			setState(5249);
37943 			_errHandler.sync(this);
37944 			switch (_input.LA(1)) {
37945 			case ON:
37946 				enterOuterAlt(_localctx, 1);
37947 				{
37948 				setState(5245);
37949 				match(ON);
37950 				setState(5246);
37951 				expr(0);
37952 				}
37953 				break;
37954 			case USING:
37955 				enterOuterAlt(_localctx, 2);
37956 				{
37957 				setState(5247);
37958 				match(USING);
37959 				setState(5248);
37960 				columnNames();
37961 				}
37962 				break;
37963 			default:
37964 				throw new NoViableAltException(this);
37965 			}
37966 		}
37967 		catch (RecognitionException re) {
37968 			_localctx.exception = re;
37969 			_errHandler.reportError(this, re);
37970 			_errHandler.recover(this, re);
37971 		}
37972 		finally {
37973 			exitRule();
37974 		}
37975 		return _localctx;
37976 	}
37977 
37978 	public static class WhereClauseContext extends ParserRuleContext {
37979 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
37980 		public ExprContext expr() {
37981 			return getRuleContext(ExprContext.class,0);
37982 		}
37983 		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
37984 			super(parent, invokingState);
37985 		}
37986 		@Override public int getRuleIndex() { return RULE_whereClause; }
37987 		@Override
37988 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37989 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWhereClause(this);
37990 			else return visitor.visitChildren(this);
37991 		}
37992 	}
37993 
37994 	public final WhereClauseContext whereClause() throws RecognitionException {
37995 		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
37996 		enterRule(_localctx, 732, RULE_whereClause);
37997 		try {
37998 			enterOuterAlt(_localctx, 1);
37999 			{
38000 			setState(5251);
38001 			match(WHERE);
38002 			setState(5252);
38003 			expr(0);
38004 			}
38005 		}
38006 		catch (RecognitionException re) {
38007 			_localctx.exception = re;
38008 			_errHandler.reportError(this, re);
38009 			_errHandler.recover(this, re);
38010 		}
38011 		finally {
38012 			exitRule();
38013 		}
38014 		return _localctx;
38015 	}
38016 
38017 	public static class GroupByClauseContext extends ParserRuleContext {
38018 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
38019 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
38020 		public List<OrderByItemContext> orderByItem() {
38021 			return getRuleContexts(OrderByItemContext.class);
38022 		}
38023 		public OrderByItemContext orderByItem(int i) {
38024 			return getRuleContext(OrderByItemContext.class,i);
38025 		}
38026 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38027 		public TerminalNode COMMA_(int i) {
38028 			return getToken(SQLServerStatementParser.COMMA_, i);
38029 		}
38030 		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
38031 			super(parent, invokingState);
38032 		}
38033 		@Override public int getRuleIndex() { return RULE_groupByClause; }
38034 		@Override
38035 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38036 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGroupByClause(this);
38037 			else return visitor.visitChildren(this);
38038 		}
38039 	}
38040 
38041 	public final GroupByClauseContext groupByClause() throws RecognitionException {
38042 		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
38043 		enterRule(_localctx, 734, RULE_groupByClause);
38044 		int _la;
38045 		try {
38046 			enterOuterAlt(_localctx, 1);
38047 			{
38048 			setState(5254);
38049 			match(GROUP);
38050 			setState(5255);
38051 			match(BY);
38052 			setState(5256);
38053 			orderByItem();
38054 			setState(5261);
38055 			_errHandler.sync(this);
38056 			_la = _input.LA(1);
38057 			while (_la==COMMA_) {
38058 				{
38059 				{
38060 				setState(5257);
38061 				match(COMMA_);
38062 				setState(5258);
38063 				orderByItem();
38064 				}
38065 				}
38066 				setState(5263);
38067 				_errHandler.sync(this);
38068 				_la = _input.LA(1);
38069 			}
38070 			}
38071 		}
38072 		catch (RecognitionException re) {
38073 			_localctx.exception = re;
38074 			_errHandler.reportError(this, re);
38075 			_errHandler.recover(this, re);
38076 		}
38077 		finally {
38078 			exitRule();
38079 		}
38080 		return _localctx;
38081 	}
38082 
38083 	public static class HavingClauseContext extends ParserRuleContext {
38084 		public TerminalNode HAVING() { return getToken(SQLServerStatementParser.HAVING, 0); }
38085 		public ExprContext expr() {
38086 			return getRuleContext(ExprContext.class,0);
38087 		}
38088 		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
38089 			super(parent, invokingState);
38090 		}
38091 		@Override public int getRuleIndex() { return RULE_havingClause; }
38092 		@Override
38093 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38094 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHavingClause(this);
38095 			else return visitor.visitChildren(this);
38096 		}
38097 	}
38098 
38099 	public final HavingClauseContext havingClause() throws RecognitionException {
38100 		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
38101 		enterRule(_localctx, 736, RULE_havingClause);
38102 		try {
38103 			enterOuterAlt(_localctx, 1);
38104 			{
38105 			setState(5264);
38106 			match(HAVING);
38107 			setState(5265);
38108 			expr(0);
38109 			}
38110 		}
38111 		catch (RecognitionException re) {
38112 			_localctx.exception = re;
38113 			_errHandler.reportError(this, re);
38114 			_errHandler.recover(this, re);
38115 		}
38116 		finally {
38117 			exitRule();
38118 		}
38119 		return _localctx;
38120 	}
38121 
38122 	public static class SubqueryContext extends ParserRuleContext {
38123 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
38124 		public AggregationClauseContext aggregationClause() {
38125 			return getRuleContext(AggregationClauseContext.class,0);
38126 		}
38127 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
38128 		public SubqueryContext(ParserRuleContext parent, int invokingState) {
38129 			super(parent, invokingState);
38130 		}
38131 		@Override public int getRuleIndex() { return RULE_subquery; }
38132 		@Override
38133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSubquery(this);
38135 			else return visitor.visitChildren(this);
38136 		}
38137 	}
38138 
38139 	public final SubqueryContext subquery() throws RecognitionException {
38140 		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
38141 		enterRule(_localctx, 738, RULE_subquery);
38142 		try {
38143 			enterOuterAlt(_localctx, 1);
38144 			{
38145 			setState(5267);
38146 			match(LP_);
38147 			setState(5268);
38148 			aggregationClause();
38149 			setState(5269);
38150 			match(RP_);
38151 			}
38152 		}
38153 		catch (RecognitionException re) {
38154 			_localctx.exception = re;
38155 			_errHandler.reportError(this, re);
38156 			_errHandler.recover(this, re);
38157 		}
38158 		finally {
38159 			exitRule();
38160 		}
38161 		return _localctx;
38162 	}
38163 
38164 	public static class WithClauseContext extends ParserRuleContext {
38165 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
38166 		public CteClauseSetContext cteClauseSet() {
38167 			return getRuleContext(CteClauseSetContext.class,0);
38168 		}
38169 		public WithClauseContext(ParserRuleContext parent, int invokingState) {
38170 			super(parent, invokingState);
38171 		}
38172 		@Override public int getRuleIndex() { return RULE_withClause; }
38173 		@Override
38174 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38175 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithClause(this);
38176 			else return visitor.visitChildren(this);
38177 		}
38178 	}
38179 
38180 	public final WithClauseContext withClause() throws RecognitionException {
38181 		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
38182 		enterRule(_localctx, 740, RULE_withClause);
38183 		try {
38184 			enterOuterAlt(_localctx, 1);
38185 			{
38186 			setState(5271);
38187 			match(WITH);
38188 			setState(5272);
38189 			cteClauseSet();
38190 			}
38191 		}
38192 		catch (RecognitionException re) {
38193 			_localctx.exception = re;
38194 			_errHandler.reportError(this, re);
38195 			_errHandler.recover(this, re);
38196 		}
38197 		finally {
38198 			exitRule();
38199 		}
38200 		return _localctx;
38201 	}
38202 
38203 	public static class CteClauseSetContext extends ParserRuleContext {
38204 		public List<CteClauseContext> cteClause() {
38205 			return getRuleContexts(CteClauseContext.class);
38206 		}
38207 		public CteClauseContext cteClause(int i) {
38208 			return getRuleContext(CteClauseContext.class,i);
38209 		}
38210 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38211 		public TerminalNode COMMA_(int i) {
38212 			return getToken(SQLServerStatementParser.COMMA_, i);
38213 		}
38214 		public CteClauseSetContext(ParserRuleContext parent, int invokingState) {
38215 			super(parent, invokingState);
38216 		}
38217 		@Override public int getRuleIndex() { return RULE_cteClauseSet; }
38218 		@Override
38219 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38220 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClauseSet(this);
38221 			else return visitor.visitChildren(this);
38222 		}
38223 	}
38224 
38225 	public final CteClauseSetContext cteClauseSet() throws RecognitionException {
38226 		CteClauseSetContext _localctx = new CteClauseSetContext(_ctx, getState());
38227 		enterRule(_localctx, 742, RULE_cteClauseSet);
38228 		int _la;
38229 		try {
38230 			enterOuterAlt(_localctx, 1);
38231 			{
38232 			setState(5274);
38233 			cteClause();
38234 			setState(5279);
38235 			_errHandler.sync(this);
38236 			_la = _input.LA(1);
38237 			while (_la==COMMA_) {
38238 				{
38239 				{
38240 				setState(5275);
38241 				match(COMMA_);
38242 				setState(5276);
38243 				cteClause();
38244 				}
38245 				}
38246 				setState(5281);
38247 				_errHandler.sync(this);
38248 				_la = _input.LA(1);
38249 			}
38250 			}
38251 		}
38252 		catch (RecognitionException re) {
38253 			_localctx.exception = re;
38254 			_errHandler.reportError(this, re);
38255 			_errHandler.recover(this, re);
38256 		}
38257 		finally {
38258 			exitRule();
38259 		}
38260 		return _localctx;
38261 	}
38262 
38263 	public static class CteClauseContext extends ParserRuleContext {
38264 		public IdentifierContext identifier() {
38265 			return getRuleContext(IdentifierContext.class,0);
38266 		}
38267 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38268 		public SubqueryContext subquery() {
38269 			return getRuleContext(SubqueryContext.class,0);
38270 		}
38271 		public ColumnNamesContext columnNames() {
38272 			return getRuleContext(ColumnNamesContext.class,0);
38273 		}
38274 		public CteClauseContext(ParserRuleContext parent, int invokingState) {
38275 			super(parent, invokingState);
38276 		}
38277 		@Override public int getRuleIndex() { return RULE_cteClause; }
38278 		@Override
38279 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38280 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClause(this);
38281 			else return visitor.visitChildren(this);
38282 		}
38283 	}
38284 
38285 	public final CteClauseContext cteClause() throws RecognitionException {
38286 		CteClauseContext _localctx = new CteClauseContext(_ctx, getState());
38287 		enterRule(_localctx, 744, RULE_cteClause);
38288 		int _la;
38289 		try {
38290 			enterOuterAlt(_localctx, 1);
38291 			{
38292 			setState(5282);
38293 			identifier();
38294 			setState(5284);
38295 			_errHandler.sync(this);
38296 			_la = _input.LA(1);
38297 			if (_la==LP_) {
38298 				{
38299 				setState(5283);
38300 				columnNames();
38301 				}
38302 			}
38303 
38304 			setState(5286);
38305 			match(AS);
38306 			setState(5287);
38307 			subquery();
38308 			}
38309 		}
38310 		catch (RecognitionException re) {
38311 			_localctx.exception = re;
38312 			_errHandler.reportError(this, re);
38313 			_errHandler.recover(this, re);
38314 		}
38315 		finally {
38316 			exitRule();
38317 		}
38318 		return _localctx;
38319 	}
38320 
38321 	public static class OutputClauseContext extends ParserRuleContext {
38322 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
38323 		public OutputWithColumnsContext outputWithColumns() {
38324 			return getRuleContext(OutputWithColumnsContext.class,0);
38325 		}
38326 		public OutputWithAateriskContext outputWithAaterisk() {
38327 			return getRuleContext(OutputWithAateriskContext.class,0);
38328 		}
38329 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
38330 		public OutputTableNameContext outputTableName() {
38331 			return getRuleContext(OutputTableNameContext.class,0);
38332 		}
38333 		public ColumnNamesContext columnNames() {
38334 			return getRuleContext(ColumnNamesContext.class,0);
38335 		}
38336 		public OutputClauseContext(ParserRuleContext parent, int invokingState) {
38337 			super(parent, invokingState);
38338 		}
38339 		@Override public int getRuleIndex() { return RULE_outputClause; }
38340 		@Override
38341 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38342 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputClause(this);
38343 			else return visitor.visitChildren(this);
38344 		}
38345 	}
38346 
38347 	public final OutputClauseContext outputClause() throws RecognitionException {
38348 		OutputClauseContext _localctx = new OutputClauseContext(_ctx, getState());
38349 		enterRule(_localctx, 746, RULE_outputClause);
38350 		int _la;
38351 		try {
38352 			enterOuterAlt(_localctx, 1);
38353 			{
38354 			setState(5289);
38355 			match(OUTPUT);
38356 			setState(5292);
38357 			_errHandler.sync(this);
38358 			switch ( getInterpreter().adaptivePredict(_input,610,_ctx) ) {
38359 			case 1:
38360 				{
38361 				setState(5290);
38362 				outputWithColumns();
38363 				}
38364 				break;
38365 			case 2:
38366 				{
38367 				setState(5291);
38368 				outputWithAaterisk();
38369 				}
38370 				break;
38371 			}
38372 			setState(5299);
38373 			_errHandler.sync(this);
38374 			_la = _input.LA(1);
38375 			if (_la==INTO) {
38376 				{
38377 				setState(5294);
38378 				match(INTO);
38379 				setState(5295);
38380 				outputTableName();
38381 				setState(5297);
38382 				_errHandler.sync(this);
38383 				_la = _input.LA(1);
38384 				if (_la==LP_) {
38385 					{
38386 					setState(5296);
38387 					columnNames();
38388 					}
38389 				}
38390 
38391 				}
38392 			}
38393 
38394 			}
38395 		}
38396 		catch (RecognitionException re) {
38397 			_localctx.exception = re;
38398 			_errHandler.reportError(this, re);
38399 			_errHandler.recover(this, re);
38400 		}
38401 		finally {
38402 			exitRule();
38403 		}
38404 		return _localctx;
38405 	}
38406 
38407 	public static class OutputWithColumnsContext extends ParserRuleContext {
38408 		public List<OutputWithColumnContext> outputWithColumn() {
38409 			return getRuleContexts(OutputWithColumnContext.class);
38410 		}
38411 		public OutputWithColumnContext outputWithColumn(int i) {
38412 			return getRuleContext(OutputWithColumnContext.class,i);
38413 		}
38414 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38415 		public TerminalNode COMMA_(int i) {
38416 			return getToken(SQLServerStatementParser.COMMA_, i);
38417 		}
38418 		public OutputWithColumnsContext(ParserRuleContext parent, int invokingState) {
38419 			super(parent, invokingState);
38420 		}
38421 		@Override public int getRuleIndex() { return RULE_outputWithColumns; }
38422 		@Override
38423 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38424 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumns(this);
38425 			else return visitor.visitChildren(this);
38426 		}
38427 	}
38428 
38429 	public final OutputWithColumnsContext outputWithColumns() throws RecognitionException {
38430 		OutputWithColumnsContext _localctx = new OutputWithColumnsContext(_ctx, getState());
38431 		enterRule(_localctx, 748, RULE_outputWithColumns);
38432 		int _la;
38433 		try {
38434 			enterOuterAlt(_localctx, 1);
38435 			{
38436 			setState(5301);
38437 			outputWithColumn();
38438 			setState(5306);
38439 			_errHandler.sync(this);
38440 			_la = _input.LA(1);
38441 			while (_la==COMMA_) {
38442 				{
38443 				{
38444 				setState(5302);
38445 				match(COMMA_);
38446 				setState(5303);
38447 				outputWithColumn();
38448 				}
38449 				}
38450 				setState(5308);
38451 				_errHandler.sync(this);
38452 				_la = _input.LA(1);
38453 			}
38454 			}
38455 		}
38456 		catch (RecognitionException re) {
38457 			_localctx.exception = re;
38458 			_errHandler.reportError(this, re);
38459 			_errHandler.recover(this, re);
38460 		}
38461 		finally {
38462 			exitRule();
38463 		}
38464 		return _localctx;
38465 	}
38466 
38467 	public static class OutputWithColumnContext extends ParserRuleContext {
38468 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
38469 		public NameContext name() {
38470 			return getRuleContext(NameContext.class,0);
38471 		}
38472 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
38473 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
38474 		public AliasContext alias() {
38475 			return getRuleContext(AliasContext.class,0);
38476 		}
38477 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38478 		public OutputWithColumnContext(ParserRuleContext parent, int invokingState) {
38479 			super(parent, invokingState);
38480 		}
38481 		@Override public int getRuleIndex() { return RULE_outputWithColumn; }
38482 		@Override
38483 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38484 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumn(this);
38485 			else return visitor.visitChildren(this);
38486 		}
38487 	}
38488 
38489 	public final OutputWithColumnContext outputWithColumn() throws RecognitionException {
38490 		OutputWithColumnContext _localctx = new OutputWithColumnContext(_ctx, getState());
38491 		enterRule(_localctx, 750, RULE_outputWithColumn);
38492 		int _la;
38493 		try {
38494 			enterOuterAlt(_localctx, 1);
38495 			{
38496 			setState(5309);
38497 			_la = _input.LA(1);
38498 			if ( !(_la==INSERTED || _la==DELETED) ) {
38499 			_errHandler.recoverInline(this);
38500 			}
38501 			else {
38502 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38503 				_errHandler.reportMatch(this);
38504 				consume();
38505 			}
38506 			setState(5310);
38507 			match(DOT_);
38508 			setState(5311);
38509 			name();
38510 			setState(5316);
38511 			_errHandler.sync(this);
38512 			switch ( getInterpreter().adaptivePredict(_input,615,_ctx) ) {
38513 			case 1:
38514 				{
38515 				setState(5313);
38516 				_errHandler.sync(this);
38517 				_la = _input.LA(1);
38518 				if (_la==AS) {
38519 					{
38520 					setState(5312);
38521 					match(AS);
38522 					}
38523 				}
38524 
38525 				setState(5315);
38526 				alias();
38527 				}
38528 				break;
38529 			}
38530 			}
38531 		}
38532 		catch (RecognitionException re) {
38533 			_localctx.exception = re;
38534 			_errHandler.reportError(this, re);
38535 			_errHandler.recover(this, re);
38536 		}
38537 		finally {
38538 			exitRule();
38539 		}
38540 		return _localctx;
38541 	}
38542 
38543 	public static class OutputWithAateriskContext extends ParserRuleContext {
38544 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
38545 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
38546 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
38547 		public OutputWithAateriskContext(ParserRuleContext parent, int invokingState) {
38548 			super(parent, invokingState);
38549 		}
38550 		@Override public int getRuleIndex() { return RULE_outputWithAaterisk; }
38551 		@Override
38552 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38553 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithAaterisk(this);
38554 			else return visitor.visitChildren(this);
38555 		}
38556 	}
38557 
38558 	public final OutputWithAateriskContext outputWithAaterisk() throws RecognitionException {
38559 		OutputWithAateriskContext _localctx = new OutputWithAateriskContext(_ctx, getState());
38560 		enterRule(_localctx, 752, RULE_outputWithAaterisk);
38561 		int _la;
38562 		try {
38563 			enterOuterAlt(_localctx, 1);
38564 			{
38565 			setState(5318);
38566 			_la = _input.LA(1);
38567 			if ( !(_la==INSERTED || _la==DELETED) ) {
38568 			_errHandler.recoverInline(this);
38569 			}
38570 			else {
38571 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38572 				_errHandler.reportMatch(this);
38573 				consume();
38574 			}
38575 			setState(5319);
38576 			match(DOT_ASTERISK_);
38577 			}
38578 		}
38579 		catch (RecognitionException re) {
38580 			_localctx.exception = re;
38581 			_errHandler.reportError(this, re);
38582 			_errHandler.recover(this, re);
38583 		}
38584 		finally {
38585 			exitRule();
38586 		}
38587 		return _localctx;
38588 	}
38589 
38590 	public static class OutputTableNameContext extends ParserRuleContext {
38591 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
38592 		public NameContext name() {
38593 			return getRuleContext(NameContext.class,0);
38594 		}
38595 		public TableNameContext tableName() {
38596 			return getRuleContext(TableNameContext.class,0);
38597 		}
38598 		public OutputTableNameContext(ParserRuleContext parent, int invokingState) {
38599 			super(parent, invokingState);
38600 		}
38601 		@Override public int getRuleIndex() { return RULE_outputTableName; }
38602 		@Override
38603 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38604 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputTableName(this);
38605 			else return visitor.visitChildren(this);
38606 		}
38607 	}
38608 
38609 	public final OutputTableNameContext outputTableName() throws RecognitionException {
38610 		OutputTableNameContext _localctx = new OutputTableNameContext(_ctx, getState());
38611 		enterRule(_localctx, 754, RULE_outputTableName);
38612 		try {
38613 			setState(5324);
38614 			_errHandler.sync(this);
38615 			switch (_input.LA(1)) {
38616 			case AT_:
38617 				enterOuterAlt(_localctx, 1);
38618 				{
38619 				{
38620 				setState(5321);
38621 				match(AT_);
38622 				setState(5322);
38623 				name();
38624 				}
38625 				}
38626 				break;
38627 			case TRUNCATE:
38628 			case SCHEMA:
38629 			case COLUMNS:
38630 			case PRECISION:
38631 			case FUNCTION:
38632 			case TRIGGER:
38633 			case CAST:
38634 			case SUBSTRING:
38635 			case OFF:
38636 			case GROUP:
38637 			case LIMIT:
38638 			case OFFSET:
38639 			case SAVEPOINT:
38640 			case BOOLEAN:
38641 			case ARRAY:
38642 			case DATE:
38643 			case LOCALTIME:
38644 			case LOCALTIMESTAMP:
38645 			case QUARTER:
38646 			case WEEK:
38647 			case DAY:
38648 			case SECOND:
38649 			case MICROSECOND:
38650 			case MAX:
38651 			case MIN:
38652 			case SUM:
38653 			case COUNT:
38654 			case AVG:
38655 			case ENABLE:
38656 			case DISABLE:
38657 			case INSTANCE:
38658 			case DO:
38659 			case DEFINER:
38660 			case SQL:
38661 			case CASCADED:
38662 			case LOCAL:
38663 			case NEXT:
38664 			case NAME:
38665 			case INTEGER:
38666 			case TYPE:
38667 			case TEXT:
38668 			case VIEWS:
38669 			case READ_ONLY:
38670 			case DATABASE:
38671 			case RETURNS:
38672 			case DATEPART:
38673 			case PASSWORD:
38674 			case BINARY:
38675 			case HIDDEN_:
38676 			case MOD:
38677 			case PARTITION:
38678 			case PARTITIONS:
38679 			case TOP:
38680 			case ROW:
38681 			case ROWS:
38682 			case XOR:
38683 			case ALWAYS:
38684 			case ROLE:
38685 			case START:
38686 			case ALGORITHM:
38687 			case AUTO:
38688 			case BLOCKERS:
38689 			case CLUSTERED:
38690 			case NONCLUSTERED:
38691 			case COLUMNSTORE:
38692 			case CONTENT:
38693 			case YEARS:
38694 			case MONTHS:
38695 			case WEEKS:
38696 			case DAYS:
38697 			case MINUTES:
38698 			case DENY:
38699 			case DETERMINISTIC:
38700 			case DISTRIBUTION:
38701 			case DOCUMENT:
38702 			case DURABILITY:
38703 			case ENCRYPTED:
38704 			case FILESTREAM:
38705 			case FILETABLE:
38706 			case FILLFACTOR:
38707 			case FOLLOWING:
38708 			case HASH:
38709 			case HEAP:
38710 			case INBOUND:
38711 			case OUTBOUND:
38712 			case UNBOUNDED:
38713 			case INFINITE:
38714 			case LOGIN:
38715 			case MASKED:
38716 			case MAXDOP:
38717 			case MOVE:
38718 			case NOCHECK:
38719 			case OBJECT:
38720 			case ONLINE:
38721 			case OVER:
38722 			case PAGE:
38723 			case PAUSED:
38724 			case PERIOD:
38725 			case PERSISTED:
38726 			case PRECEDING:
38727 			case RANDOMIZED:
38728 			case RANGE:
38729 			case REBUILD:
38730 			case REPLICATE:
38731 			case REPLICATION:
38732 			case RESUMABLE:
38733 			case ROWGUIDCOL:
38734 			case SAVE:
38735 			case SELF:
38736 			case SPARSE:
38737 			case SWITCH:
38738 			case TRAN:
38739 			case TRANCOUNT:
38740 			case CONTROL:
38741 			case CONCAT:
38742 			case TAKE:
38743 			case OWNERSHIP:
38744 			case DEFINITION:
38745 			case APPLICATION:
38746 			case ASSEMBLY:
38747 			case SYMMETRIC:
38748 			case ASYMMETRIC:
38749 			case SERVER:
38750 			case RECEIVE:
38751 			case CHANGE:
38752 			case TRACE:
38753 			case TRACKING:
38754 			case RESOURCES:
38755 			case SETTINGS:
38756 			case STATE:
38757 			case AVAILABILITY:
38758 			case CREDENTIAL:
38759 			case ENDPOINT:
38760 			case EVENT:
38761 			case NOTIFICATION:
38762 			case LINKED:
38763 			case AUDIT:
38764 			case DDL:
38765 			case XML:
38766 			case IMPERSONATE:
38767 			case SECURABLES:
38768 			case AUTHENTICATE:
38769 			case EXTERNAL:
38770 			case ACCESS:
38771 			case ADMINISTER:
38772 			case BULK:
38773 			case OPERATIONS:
38774 			case UNSAFE:
38775 			case SHUTDOWN:
38776 			case SCOPED:
38777 			case CONFIGURATION:
38778 			case DATASPACE:
38779 			case SERVICE:
38780 			case CERTIFICATE:
38781 			case CONTRACT:
38782 			case ENCRYPTION:
38783 			case MASTER:
38784 			case DATA:
38785 			case SOURCE:
38786 			case FILE:
38787 			case FORMAT:
38788 			case LIBRARY:
38789 			case FULLTEXT:
38790 			case MASK:
38791 			case UNMASK:
38792 			case MESSAGE:
38793 			case REMOTE:
38794 			case BINDING:
38795 			case ROUTE:
38796 			case SECURITY:
38797 			case POLICY:
38798 			case AGGREGATE:
38799 			case QUEUE:
38800 			case RULE:
38801 			case SYNONYM:
38802 			case COLLECTION:
38803 			case SCRIPT:
38804 			case KILL:
38805 			case BACKUP:
38806 			case LOG:
38807 			case SHOWPLAN:
38808 			case SUBSCRIBE:
38809 			case QUERY:
38810 			case NOTIFICATIONS:
38811 			case CHECKPOINT:
38812 			case SEQUENCE:
38813 			case ABORT_AFTER_WAIT:
38814 			case ALLOW_PAGE_LOCKS:
38815 			case ALLOW_ROW_LOCKS:
38816 			case ALL_SPARSE_COLUMNS:
38817 			case BUCKET_COUNT:
38818 			case COLUMNSTORE_ARCHIVE:
38819 			case COLUMN_ENCRYPTION_KEY:
38820 			case COLUMN_SET:
38821 			case COMPRESSION_DELAY:
38822 			case DATABASE_DEAULT:
38823 			case DATA_COMPRESSION:
38824 			case DATA_CONSISTENCY_CHECK:
38825 			case ENCRYPTION_TYPE:
38826 			case SYSTEM_TIME:
38827 			case SYSTEM_VERSIONING:
38828 			case TEXTIMAGE_ON:
38829 			case WAIT_AT_LOW_PRIORITY:
38830 			case STATISTICS_INCREMENTAL:
38831 			case STATISTICS_NORECOMPUTE:
38832 			case ROUND_ROBIN:
38833 			case SCHEMA_AND_DATA:
38834 			case SCHEMA_ONLY:
38835 			case SORT_IN_TEMPDB:
38836 			case IGNORE_DUP_KEY:
38837 			case IMPLICIT_TRANSACTIONS:
38838 			case MAX_DURATION:
38839 			case MEMORY_OPTIMIZED:
38840 			case MIGRATION_STATE:
38841 			case PAD_INDEX:
38842 			case REMOTE_DATA_ARCHIVE:
38843 			case FILESTREAM_ON:
38844 			case FILETABLE_COLLATE_FILENAME:
38845 			case FILETABLE_DIRECTORY:
38846 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
38847 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
38848 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
38849 			case FILTER_PREDICATE:
38850 			case HISTORY_RETENTION_PERIOD:
38851 			case HISTORY_TABLE:
38852 			case LOCK_ESCALATION:
38853 			case DROP_EXISTING:
38854 			case ROW_NUMBER:
38855 			case FIRST:
38856 			case DATETIME2:
38857 			case OUTPUT:
38858 			case INSERTED:
38859 			case DELETED:
38860 			case FILENAME:
38861 			case MAXSIZE:
38862 			case FILEGROWTH:
38863 			case UNLIMITED:
38864 			case KB:
38865 			case MB:
38866 			case GB:
38867 			case TB:
38868 			case MEMORY_OPTIMIZED_DATA:
38869 			case FILEGROUP:
38870 			case NON_TRANSACTED_ACCESS:
38871 			case DB_CHAINING:
38872 			case TRUSTWORTHY:
38873 			case FORWARD_ONLY:
38874 			case KEYSET:
38875 			case FAST_FORWARD:
38876 			case SCROLL_LOCKS:
38877 			case OPTIMISTIC:
38878 			case TYPE_WARNING:
38879 			case SCHEMABINDING:
38880 			case CALLER:
38881 			case OWNER:
38882 			case SNAPSHOT:
38883 			case REPEATABLE:
38884 			case SERIALIZABLE:
38885 			case NATIVE_COMPILATION:
38886 			case VIEW_METADATA:
38887 			case INSTEAD:
38888 			case APPEND:
38889 			case INCREMENT:
38890 			case CACHE:
38891 			case MINVALUE:
38892 			case MAXVALUE:
38893 			case RESTART:
38894 			case LOB_COMPACTION:
38895 			case COMPRESS_ALL_ROW_GROUPS:
38896 			case REORGANIZE:
38897 			case RESUME:
38898 			case PAUSE:
38899 			case ABORT:
38900 			case ACCELERATED_DATABASE_RECOVERY:
38901 			case PERSISTENT_VERSION_STORE_FILEGROUP:
38902 			case IMMEDIATE:
38903 			case NO_WAIT:
38904 			case TARGET_RECOVERY_TIME:
38905 			case SECONDS:
38906 			case HONOR_BROKER_PRIORITY:
38907 			case ERROR_BROKER_CONVERSATIONS:
38908 			case NEW_BROKER:
38909 			case DISABLE_BROKER:
38910 			case ENABLE_BROKER:
38911 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
38912 			case READ_COMMITTED_SNAPSHOT:
38913 			case ALLOW_SNAPSHOT_ISOLATION:
38914 			case RECURSIVE_TRIGGERS:
38915 			case QUOTED_IDENTIFIER:
38916 			case NUMERIC_ROUNDABORT:
38917 			case CONCAT_NULL_YIELDS_NULL:
38918 			case COMPATIBILITY_LEVEL:
38919 			case ARITHABORT:
38920 			case ANSI_WARNINGS:
38921 			case ANSI_PADDING:
38922 			case ANSI_NULLS:
38923 			case ANSI_NULL_DEFAULT:
38924 			case PAGE_VERIFY:
38925 			case CHECKSUM:
38926 			case TORN_PAGE_DETECTION:
38927 			case BULK_LOGGED:
38928 			case RECOVERY:
38929 			case TOTAL_EXECUTION_CPU_TIME_MS:
38930 			case TOTAL_COMPILE_CPU_TIME_MS:
38931 			case STALE_CAPTURE_POLICY_THRESHOLD:
38932 			case EXECUTION_COUNT:
38933 			case QUERY_CAPTURE_POLICY:
38934 			case WAIT_STATS_CAPTURE_MODE:
38935 			case MAX_PLANS_PER_QUERY:
38936 			case QUERY_CAPTURE_MODE:
38937 			case SIZE_BASED_CLEANUP_MODE:
38938 			case INTERVAL_LENGTH_MINUTES:
38939 			case MAX_STORAGE_SIZE_MB:
38940 			case DATA_FLUSH_INTERVAL_SECONDS:
38941 			case CLEANUP_POLICY:
38942 			case CUSTOM:
38943 			case STALE_QUERY_THRESHOLD_DAYS:
38944 			case OPERATION_MODE:
38945 			case QUERY_STORE:
38946 			case CURSOR_DEFAULT:
38947 			case GLOBAL:
38948 			case CURSOR_CLOSE_ON_COMMIT:
38949 			case HOURS:
38950 			case CHANGE_RETENTION:
38951 			case AUTO_CLEANUP:
38952 			case CHANGE_TRACKING:
38953 			case AUTOMATIC_TUNING:
38954 			case FORCE_LAST_GOOD_PLAN:
38955 			case AUTO_UPDATE_STATISTICS_ASYNC:
38956 			case AUTO_UPDATE_STATISTICS:
38957 			case AUTO_SHRINK:
38958 			case AUTO_CREATE_STATISTICS:
38959 			case INCREMENTAL:
38960 			case AUTO_CLOSE:
38961 			case DATA_RETENTION:
38962 			case TEMPORAL_HISTORY_RETENTION:
38963 			case EDITION:
38964 			case MIXED_PAGE_ALLOCATION:
38965 			case DISABLED:
38966 			case ALLOWED:
38967 			case HADR:
38968 			case MULTI_USER:
38969 			case RESTRICTED_USER:
38970 			case SINGLE_USER:
38971 			case OFFLINE:
38972 			case EMERGENCY:
38973 			case SUSPEND:
38974 			case DATE_CORRELATION_OPTIMIZATION:
38975 			case ELASTIC_POOL:
38976 			case SERVICE_OBJECTIVE:
38977 			case DATABASE_NAME:
38978 			case ALLOW_CONNECTIONS:
38979 			case GEO:
38980 			case NAMED:
38981 			case DATEFIRST:
38982 			case BACKUP_STORAGE_REDUNDANCY:
38983 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
38984 			case SECONDARY:
38985 			case FAILOVER:
38986 			case DEFAULT_FULLTEXT_LANGUAGE:
38987 			case DEFAULT_LANGUAGE:
38988 			case INLINE:
38989 			case NESTED_TRIGGERS:
38990 			case TRANSFORM_NOISE_WORDS:
38991 			case TWO_DIGIT_YEAR_CUTOFF:
38992 			case PERSISTENT_LOG_BUFFER:
38993 			case DIRECTORY_NAME:
38994 			case DATEFORMAT:
38995 			case DELAYED_DURABILITY:
38996 			case AUTHORIZATION:
38997 			case TRANSFER:
38998 			case PROVIDER:
38999 			case SEARCH:
39000 			case MEMBER:
39001 			case IDENTIFIER_:
39002 			case DELIMITED_IDENTIFIER_:
39003 				enterOuterAlt(_localctx, 2);
39004 				{
39005 				setState(5323);
39006 				tableName();
39007 				}
39008 				break;
39009 			default:
39010 				throw new NoViableAltException(this);
39011 			}
39012 		}
39013 		catch (RecognitionException re) {
39014 			_localctx.exception = re;
39015 			_errHandler.reportError(this, re);
39016 			_errHandler.recover(this, re);
39017 		}
39018 		finally {
39019 			exitRule();
39020 		}
39021 		return _localctx;
39022 	}
39023 
39024 	public static class QueryHintContext extends ParserRuleContext {
39025 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
39026 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
39027 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
39028 		public TerminalNode UNION() { return getToken(SQLServerStatementParser.UNION, 0); }
39029 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
39030 		public TerminalNode MERGE() { return getToken(SQLServerStatementParser.MERGE, 0); }
39031 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
39032 		public TerminalNode LOOP() { return getToken(SQLServerStatementParser.LOOP, 0); }
39033 		public TerminalNode EXPAND() { return getToken(SQLServerStatementParser.EXPAND, 0); }
39034 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
39035 		public TerminalNode FAST() { return getToken(SQLServerStatementParser.FAST, 0); }
39036 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
39037 		public TerminalNode FORCE() { return getToken(SQLServerStatementParser.FORCE, 0); }
39038 		public TerminalNode EXTERNALPUSHDOWN() { return getToken(SQLServerStatementParser.EXTERNALPUSHDOWN, 0); }
39039 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
39040 		public TerminalNode SCALEOUTEXECUTION() { return getToken(SQLServerStatementParser.SCALEOUTEXECUTION, 0); }
39041 		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(SQLServerStatementParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
39042 		public TerminalNode KEEP() { return getToken(SQLServerStatementParser.KEEP, 0); }
39043 		public TerminalNode PLAN() { return getToken(SQLServerStatementParser.PLAN, 0); }
39044 		public TerminalNode KEEPFIXED() { return getToken(SQLServerStatementParser.KEEPFIXED, 0); }
39045 		public TerminalNode MAX_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MAX_GRANT_PERCENT, 0); }
39046 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
39047 		public TerminalNode EQ_(int i) {
39048 			return getToken(SQLServerStatementParser.EQ_, i);
39049 		}
39050 		public TerminalNode DECIMAL_NUM_() { return getToken(SQLServerStatementParser.DECIMAL_NUM_, 0); }
39051 		public TerminalNode MIN_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MIN_GRANT_PERCENT, 0); }
39052 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
39053 		public TerminalNode MAXRECURSION() { return getToken(SQLServerStatementParser.MAXRECURSION, 0); }
39054 		public TerminalNode NO_PERFORMANCE_SPOOL() { return getToken(SQLServerStatementParser.NO_PERFORMANCE_SPOOL, 0); }
39055 		public TerminalNode OPTIMIZE() { return getToken(SQLServerStatementParser.OPTIMIZE, 0); }
39056 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
39057 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39058 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
39059 		public NameContext name() {
39060 			return getRuleContext(NameContext.class,0);
39061 		}
39062 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39063 		public List<TerminalNode> UNKNOWN() { return getTokens(SQLServerStatementParser.UNKNOWN); }
39064 		public TerminalNode UNKNOWN(int i) {
39065 			return getToken(SQLServerStatementParser.UNKNOWN, i);
39066 		}
39067 		public List<IdentifierContext> identifier() {
39068 			return getRuleContexts(IdentifierContext.class);
39069 		}
39070 		public IdentifierContext identifier(int i) {
39071 			return getRuleContext(IdentifierContext.class,i);
39072 		}
39073 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
39074 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
39075 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
39076 		public TerminalNode QUERYTRACEON() { return getToken(SQLServerStatementParser.QUERYTRACEON, 0); }
39077 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
39078 		public TerminalNode ROBUST() { return getToken(SQLServerStatementParser.ROBUST, 0); }
39079 		public TerminalNode USE() { return getToken(SQLServerStatementParser.USE, 0); }
39080 		public TerminalNode HINT() { return getToken(SQLServerStatementParser.HINT, 0); }
39081 		public List<UseHitNameContext> useHitName() {
39082 			return getRuleContexts(UseHitNameContext.class);
39083 		}
39084 		public UseHitNameContext useHitName(int i) {
39085 			return getRuleContext(UseHitNameContext.class,i);
39086 		}
39087 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
39088 		public QueryHintContext(ParserRuleContext parent, int invokingState) {
39089 			super(parent, invokingState);
39090 		}
39091 		@Override public int getRuleIndex() { return RULE_queryHint; }
39092 		@Override
39093 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39094 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryHint(this);
39095 			else return visitor.visitChildren(this);
39096 		}
39097 	}
39098 
39099 	public final QueryHintContext queryHint() throws RecognitionException {
39100 		QueryHintContext _localctx = new QueryHintContext(_ctx, getState());
39101 		enterRule(_localctx, 756, RULE_queryHint);
39102 		int _la;
39103 		try {
39104 			setState(5396);
39105 			_errHandler.sync(this);
39106 			switch ( getInterpreter().adaptivePredict(_input,620,_ctx) ) {
39107 			case 1:
39108 				enterOuterAlt(_localctx, 1);
39109 				{
39110 				setState(5326);
39111 				_la = _input.LA(1);
39112 				if ( !(_la==ORDER || _la==HASH) ) {
39113 				_errHandler.recoverInline(this);
39114 				}
39115 				else {
39116 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39117 					_errHandler.reportMatch(this);
39118 					consume();
39119 				}
39120 				setState(5327);
39121 				match(GROUP);
39122 				}
39123 				break;
39124 			case 2:
39125 				enterOuterAlt(_localctx, 2);
39126 				{
39127 				setState(5328);
39128 				_la = _input.LA(1);
39129 				if ( !(_la==MERGE || _la==HASH || _la==CONCAT) ) {
39130 				_errHandler.recoverInline(this);
39131 				}
39132 				else {
39133 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39134 					_errHandler.reportMatch(this);
39135 					consume();
39136 				}
39137 				setState(5329);
39138 				match(UNION);
39139 				}
39140 				break;
39141 			case 3:
39142 				enterOuterAlt(_localctx, 3);
39143 				{
39144 				setState(5330);
39145 				_la = _input.LA(1);
39146 				if ( !(_la==MERGE || _la==LOOP || _la==HASH) ) {
39147 				_errHandler.recoverInline(this);
39148 				}
39149 				else {
39150 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39151 					_errHandler.reportMatch(this);
39152 					consume();
39153 				}
39154 				setState(5331);
39155 				match(JOIN);
39156 				}
39157 				break;
39158 			case 4:
39159 				enterOuterAlt(_localctx, 4);
39160 				{
39161 				setState(5332);
39162 				match(EXPAND);
39163 				setState(5333);
39164 				match(VIEWS);
39165 				}
39166 				break;
39167 			case 5:
39168 				enterOuterAlt(_localctx, 5);
39169 				{
39170 				setState(5334);
39171 				match(FAST);
39172 				setState(5335);
39173 				match(INT_NUM_);
39174 				}
39175 				break;
39176 			case 6:
39177 				enterOuterAlt(_localctx, 6);
39178 				{
39179 				setState(5336);
39180 				match(FORCE);
39181 				setState(5337);
39182 				match(ORDER);
39183 				}
39184 				break;
39185 			case 7:
39186 				enterOuterAlt(_localctx, 7);
39187 				{
39188 				setState(5338);
39189 				_la = _input.LA(1);
39190 				if ( !(_la==DISABLE || _la==FORCE) ) {
39191 				_errHandler.recoverInline(this);
39192 				}
39193 				else {
39194 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39195 					_errHandler.reportMatch(this);
39196 					consume();
39197 				}
39198 				setState(5339);
39199 				match(EXTERNALPUSHDOWN);
39200 				}
39201 				break;
39202 			case 8:
39203 				enterOuterAlt(_localctx, 8);
39204 				{
39205 				setState(5340);
39206 				_la = _input.LA(1);
39207 				if ( !(_la==DISABLE || _la==FORCE) ) {
39208 				_errHandler.recoverInline(this);
39209 				}
39210 				else {
39211 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39212 					_errHandler.reportMatch(this);
39213 					consume();
39214 				}
39215 				setState(5341);
39216 				match(SCALEOUTEXECUTION);
39217 				}
39218 				break;
39219 			case 9:
39220 				enterOuterAlt(_localctx, 9);
39221 				{
39222 				setState(5342);
39223 				match(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);
39224 				}
39225 				break;
39226 			case 10:
39227 				enterOuterAlt(_localctx, 10);
39228 				{
39229 				setState(5343);
39230 				match(KEEP);
39231 				setState(5344);
39232 				match(PLAN);
39233 				}
39234 				break;
39235 			case 11:
39236 				enterOuterAlt(_localctx, 11);
39237 				{
39238 				setState(5345);
39239 				match(KEEPFIXED);
39240 				setState(5346);
39241 				match(PLAN);
39242 				}
39243 				break;
39244 			case 12:
39245 				enterOuterAlt(_localctx, 12);
39246 				{
39247 				setState(5347);
39248 				match(MAX_GRANT_PERCENT);
39249 				setState(5348);
39250 				match(EQ_);
39251 				setState(5349);
39252 				match(DECIMAL_NUM_);
39253 				}
39254 				break;
39255 			case 13:
39256 				enterOuterAlt(_localctx, 13);
39257 				{
39258 				setState(5350);
39259 				match(MIN_GRANT_PERCENT);
39260 				setState(5351);
39261 				match(EQ_);
39262 				setState(5352);
39263 				match(DECIMAL_NUM_);
39264 				}
39265 				break;
39266 			case 14:
39267 				enterOuterAlt(_localctx, 14);
39268 				{
39269 				setState(5353);
39270 				match(MAXDOP);
39271 				setState(5354);
39272 				match(INT_NUM_);
39273 				}
39274 				break;
39275 			case 15:
39276 				enterOuterAlt(_localctx, 15);
39277 				{
39278 				setState(5355);
39279 				match(MAXRECURSION);
39280 				setState(5356);
39281 				match(INT_NUM_);
39282 				}
39283 				break;
39284 			case 16:
39285 				enterOuterAlt(_localctx, 16);
39286 				{
39287 				setState(5357);
39288 				match(NO_PERFORMANCE_SPOOL);
39289 				}
39290 				break;
39291 			case 17:
39292 				enterOuterAlt(_localctx, 17);
39293 				{
39294 				setState(5358);
39295 				match(OPTIMIZE);
39296 				setState(5359);
39297 				match(FOR);
39298 				setState(5360);
39299 				match(LP_);
39300 				setState(5361);
39301 				match(AT_);
39302 				setState(5362);
39303 				name();
39304 				setState(5368);
39305 				_errHandler.sync(this);
39306 				_la = _input.LA(1);
39307 				while (_la==EQ_ || _la==UNKNOWN) {
39308 					{
39309 					setState(5366);
39310 					_errHandler.sync(this);
39311 					switch (_input.LA(1)) {
39312 					case UNKNOWN:
39313 						{
39314 						setState(5363);
39315 						match(UNKNOWN);
39316 						}
39317 						break;
39318 					case EQ_:
39319 						{
39320 						setState(5364);
39321 						match(EQ_);
39322 						setState(5365);
39323 						identifier();
39324 						}
39325 						break;
39326 					default:
39327 						throw new NoViableAltException(this);
39328 					}
39329 					}
39330 					setState(5370);
39331 					_errHandler.sync(this);
39332 					_la = _input.LA(1);
39333 				}
39334 				setState(5371);
39335 				match(RP_);
39336 				}
39337 				break;
39338 			case 18:
39339 				enterOuterAlt(_localctx, 18);
39340 				{
39341 				setState(5373);
39342 				match(OPTIMIZE);
39343 				setState(5374);
39344 				match(FOR);
39345 				setState(5375);
39346 				match(UNKNOWN);
39347 				}
39348 				break;
39349 			case 19:
39350 				enterOuterAlt(_localctx, 19);
39351 				{
39352 				setState(5376);
39353 				match(PARAMETERIZATION);
39354 				setState(5377);
39355 				_la = _input.LA(1);
39356 				if ( !(_la==SIMPLE || _la==FORCED) ) {
39357 				_errHandler.recoverInline(this);
39358 				}
39359 				else {
39360 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39361 					_errHandler.reportMatch(this);
39362 					consume();
39363 				}
39364 				}
39365 				break;
39366 			case 20:
39367 				enterOuterAlt(_localctx, 20);
39368 				{
39369 				setState(5378);
39370 				match(QUERYTRACEON);
39371 				setState(5379);
39372 				match(INT_NUM_);
39373 				}
39374 				break;
39375 			case 21:
39376 				enterOuterAlt(_localctx, 21);
39377 				{
39378 				setState(5380);
39379 				match(RECOMPILE);
39380 				}
39381 				break;
39382 			case 22:
39383 				enterOuterAlt(_localctx, 22);
39384 				{
39385 				setState(5381);
39386 				match(ROBUST);
39387 				setState(5382);
39388 				match(PLAN);
39389 				}
39390 				break;
39391 			case 23:
39392 				enterOuterAlt(_localctx, 23);
39393 				{
39394 				setState(5383);
39395 				match(USE);
39396 				setState(5384);
39397 				match(HINT);
39398 				setState(5385);
39399 				match(LP_);
39400 				setState(5389);
39401 				_errHandler.sync(this);
39402 				_la = _input.LA(1);
39403 				while (_la==SQ_) {
39404 					{
39405 					{
39406 					setState(5386);
39407 					useHitName();
39408 					}
39409 					}
39410 					setState(5391);
39411 					_errHandler.sync(this);
39412 					_la = _input.LA(1);
39413 				}
39414 				setState(5392);
39415 				match(RP_);
39416 				}
39417 				break;
39418 			case 24:
39419 				enterOuterAlt(_localctx, 24);
39420 				{
39421 				setState(5393);
39422 				match(USE);
39423 				setState(5394);
39424 				match(PLAN);
39425 				setState(5395);
39426 				match(NCHAR_TEXT);
39427 				}
39428 				break;
39429 			}
39430 		}
39431 		catch (RecognitionException re) {
39432 			_localctx.exception = re;
39433 			_errHandler.reportError(this, re);
39434 			_errHandler.recover(this, re);
39435 		}
39436 		finally {
39437 			exitRule();
39438 		}
39439 		return _localctx;
39440 	}
39441 
39442 	public static class UseHitNameContext extends ParserRuleContext {
39443 		public List<TerminalNode> SQ_() { return getTokens(SQLServerStatementParser.SQ_); }
39444 		public TerminalNode SQ_(int i) {
39445 			return getToken(SQLServerStatementParser.SQ_, i);
39446 		}
39447 		public TerminalNode ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS() { return getToken(SQLServerStatementParser.ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS, 0); }
39448 		public TerminalNode ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES() { return getToken(SQLServerStatementParser.ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES, 0); }
39449 		public TerminalNode DISABLE_BATCH_MODE_ADAPTIVE_JOINS() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_ADAPTIVE_JOINS, 0); }
39450 		public TerminalNode DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK, 0); }
39451 		public TerminalNode DISABLE_DEFERRED_COMPILATION_TV() { return getToken(SQLServerStatementParser.DISABLE_DEFERRED_COMPILATION_TV, 0); }
39452 		public TerminalNode DISABLE_INTERLEAVED_EXECUTION_TVF() { return getToken(SQLServerStatementParser.DISABLE_INTERLEAVED_EXECUTION_TVF, 0); }
39453 		public TerminalNode DISABLE_OPTIMIZED_NESTED_LOOP() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZED_NESTED_LOOP, 0); }
39454 		public TerminalNode DISABLE_OPTIMIZER_ROWGOAL() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZER_ROWGOAL, 0); }
39455 		public TerminalNode DISABLE_PARAMETER_SNIFFING() { return getToken(SQLServerStatementParser.DISABLE_PARAMETER_SNIFFING, 0); }
39456 		public TerminalNode DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK, 0); }
39457 		public TerminalNode DISABLE_TSQL_SCALAR_UDF_INLINING() { return getToken(SQLServerStatementParser.DISABLE_TSQL_SCALAR_UDF_INLINING, 0); }
39458 		public TerminalNode DISALLOW_BATCH_MODE() { return getToken(SQLServerStatementParser.DISALLOW_BATCH_MODE, 0); }
39459 		public TerminalNode ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS() { return getToken(SQLServerStatementParser.ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS, 0); }
39460 		public TerminalNode ENABLE_QUERY_OPTIMIZER_HOTFIXES() { return getToken(SQLServerStatementParser.ENABLE_QUERY_OPTIMIZER_HOTFIXES, 0); }
39461 		public TerminalNode FORCE_DEFAULT_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_DEFAULT_CARDINALITY_ESTIMATION, 0); }
39462 		public TerminalNode FORCE_LEGACY_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_LEGACY_CARDINALITY_ESTIMATION, 0); }
39463 		public TerminalNode QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n() { return getToken(SQLServerStatementParser.QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n, 0); }
39464 		public TerminalNode QUERY_PLAN_PROFILE() { return getToken(SQLServerStatementParser.QUERY_PLAN_PROFILE, 0); }
39465 		public UseHitNameContext(ParserRuleContext parent, int invokingState) {
39466 			super(parent, invokingState);
39467 		}
39468 		@Override public int getRuleIndex() { return RULE_useHitName; }
39469 		@Override
39470 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39471 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUseHitName(this);
39472 			else return visitor.visitChildren(this);
39473 		}
39474 	}
39475 
39476 	public final UseHitNameContext useHitName() throws RecognitionException {
39477 		UseHitNameContext _localctx = new UseHitNameContext(_ctx, getState());
39478 		enterRule(_localctx, 758, RULE_useHitName);
39479 		try {
39480 			setState(5452);
39481 			_errHandler.sync(this);
39482 			switch ( getInterpreter().adaptivePredict(_input,621,_ctx) ) {
39483 			case 1:
39484 				enterOuterAlt(_localctx, 1);
39485 				{
39486 				setState(5398);
39487 				match(SQ_);
39488 				setState(5399);
39489 				match(ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS);
39490 				setState(5400);
39491 				match(SQ_);
39492 				}
39493 				break;
39494 			case 2:
39495 				enterOuterAlt(_localctx, 2);
39496 				{
39497 				setState(5401);
39498 				match(SQ_);
39499 				setState(5402);
39500 				match(ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES);
39501 				setState(5403);
39502 				match(SQ_);
39503 				}
39504 				break;
39505 			case 3:
39506 				enterOuterAlt(_localctx, 3);
39507 				{
39508 				setState(5404);
39509 				match(SQ_);
39510 				setState(5405);
39511 				match(DISABLE_BATCH_MODE_ADAPTIVE_JOINS);
39512 				setState(5406);
39513 				match(SQ_);
39514 				}
39515 				break;
39516 			case 4:
39517 				enterOuterAlt(_localctx, 4);
39518 				{
39519 				setState(5407);
39520 				match(SQ_);
39521 				setState(5408);
39522 				match(DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK);
39523 				setState(5409);
39524 				match(SQ_);
39525 				}
39526 				break;
39527 			case 5:
39528 				enterOuterAlt(_localctx, 5);
39529 				{
39530 				setState(5410);
39531 				match(SQ_);
39532 				setState(5411);
39533 				match(DISABLE_DEFERRED_COMPILATION_TV);
39534 				setState(5412);
39535 				match(SQ_);
39536 				}
39537 				break;
39538 			case 6:
39539 				enterOuterAlt(_localctx, 6);
39540 				{
39541 				setState(5413);
39542 				match(SQ_);
39543 				setState(5414);
39544 				match(DISABLE_INTERLEAVED_EXECUTION_TVF);
39545 				setState(5415);
39546 				match(SQ_);
39547 				}
39548 				break;
39549 			case 7:
39550 				enterOuterAlt(_localctx, 7);
39551 				{
39552 				setState(5416);
39553 				match(SQ_);
39554 				setState(5417);
39555 				match(DISABLE_OPTIMIZED_NESTED_LOOP);
39556 				setState(5418);
39557 				match(SQ_);
39558 				}
39559 				break;
39560 			case 8:
39561 				enterOuterAlt(_localctx, 8);
39562 				{
39563 				setState(5419);
39564 				match(SQ_);
39565 				setState(5420);
39566 				match(DISABLE_OPTIMIZER_ROWGOAL);
39567 				setState(5421);
39568 				match(SQ_);
39569 				}
39570 				break;
39571 			case 9:
39572 				enterOuterAlt(_localctx, 9);
39573 				{
39574 				setState(5422);
39575 				match(SQ_);
39576 				setState(5423);
39577 				match(DISABLE_PARAMETER_SNIFFING);
39578 				setState(5424);
39579 				match(SQ_);
39580 				}
39581 				break;
39582 			case 10:
39583 				enterOuterAlt(_localctx, 10);
39584 				{
39585 				setState(5425);
39586 				match(SQ_);
39587 				setState(5426);
39588 				match(DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK);
39589 				setState(5427);
39590 				match(SQ_);
39591 				}
39592 				break;
39593 			case 11:
39594 				enterOuterAlt(_localctx, 11);
39595 				{
39596 				setState(5428);
39597 				match(SQ_);
39598 				setState(5429);
39599 				match(DISABLE_TSQL_SCALAR_UDF_INLINING);
39600 				setState(5430);
39601 				match(SQ_);
39602 				}
39603 				break;
39604 			case 12:
39605 				enterOuterAlt(_localctx, 12);
39606 				{
39607 				setState(5431);
39608 				match(SQ_);
39609 				setState(5432);
39610 				match(DISALLOW_BATCH_MODE);
39611 				setState(5433);
39612 				match(SQ_);
39613 				}
39614 				break;
39615 			case 13:
39616 				enterOuterAlt(_localctx, 13);
39617 				{
39618 				setState(5434);
39619 				match(SQ_);
39620 				setState(5435);
39621 				match(ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS);
39622 				setState(5436);
39623 				match(SQ_);
39624 				}
39625 				break;
39626 			case 14:
39627 				enterOuterAlt(_localctx, 14);
39628 				{
39629 				setState(5437);
39630 				match(SQ_);
39631 				setState(5438);
39632 				match(ENABLE_QUERY_OPTIMIZER_HOTFIXES);
39633 				setState(5439);
39634 				match(SQ_);
39635 				}
39636 				break;
39637 			case 15:
39638 				enterOuterAlt(_localctx, 15);
39639 				{
39640 				setState(5440);
39641 				match(SQ_);
39642 				setState(5441);
39643 				match(FORCE_DEFAULT_CARDINALITY_ESTIMATION);
39644 				setState(5442);
39645 				match(SQ_);
39646 				}
39647 				break;
39648 			case 16:
39649 				enterOuterAlt(_localctx, 16);
39650 				{
39651 				setState(5443);
39652 				match(SQ_);
39653 				setState(5444);
39654 				match(FORCE_LEGACY_CARDINALITY_ESTIMATION);
39655 				setState(5445);
39656 				match(SQ_);
39657 				}
39658 				break;
39659 			case 17:
39660 				enterOuterAlt(_localctx, 17);
39661 				{
39662 				setState(5446);
39663 				match(SQ_);
39664 				setState(5447);
39665 				match(QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n);
39666 				setState(5448);
39667 				match(SQ_);
39668 				}
39669 				break;
39670 			case 18:
39671 				enterOuterAlt(_localctx, 18);
39672 				{
39673 				setState(5449);
39674 				match(SQ_);
39675 				setState(5450);
39676 				match(QUERY_PLAN_PROFILE);
39677 				setState(5451);
39678 				match(SQ_);
39679 				}
39680 				break;
39681 			}
39682 		}
39683 		catch (RecognitionException re) {
39684 			_localctx.exception = re;
39685 			_errHandler.reportError(this, re);
39686 			_errHandler.recover(this, re);
39687 		}
39688 		finally {
39689 			exitRule();
39690 		}
39691 		return _localctx;
39692 	}
39693 
39694 	public static class ForClauseContext extends ParserRuleContext {
39695 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
39696 		public TerminalNode BROWSE() { return getToken(SQLServerStatementParser.BROWSE, 0); }
39697 		public ForXmlClauseContext forXmlClause() {
39698 			return getRuleContext(ForXmlClauseContext.class,0);
39699 		}
39700 		public ForJsonClauseContext forJsonClause() {
39701 			return getRuleContext(ForJsonClauseContext.class,0);
39702 		}
39703 		public ForClauseContext(ParserRuleContext parent, int invokingState) {
39704 			super(parent, invokingState);
39705 		}
39706 		@Override public int getRuleIndex() { return RULE_forClause; }
39707 		@Override
39708 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39709 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForClause(this);
39710 			else return visitor.visitChildren(this);
39711 		}
39712 	}
39713 
39714 	public final ForClauseContext forClause() throws RecognitionException {
39715 		ForClauseContext _localctx = new ForClauseContext(_ctx, getState());
39716 		enterRule(_localctx, 760, RULE_forClause);
39717 		try {
39718 			enterOuterAlt(_localctx, 1);
39719 			{
39720 			setState(5454);
39721 			match(FOR);
39722 			setState(5458);
39723 			_errHandler.sync(this);
39724 			switch (_input.LA(1)) {
39725 			case BROWSE:
39726 				{
39727 				setState(5455);
39728 				match(BROWSE);
39729 				}
39730 				break;
39731 			case XML:
39732 				{
39733 				setState(5456);
39734 				forXmlClause();
39735 				}
39736 				break;
39737 			case JSON:
39738 				{
39739 				setState(5457);
39740 				forJsonClause();
39741 				}
39742 				break;
39743 			default:
39744 				throw new NoViableAltException(this);
39745 			}
39746 			}
39747 		}
39748 		catch (RecognitionException re) {
39749 			_localctx.exception = re;
39750 			_errHandler.reportError(this, re);
39751 			_errHandler.recover(this, re);
39752 		}
39753 		finally {
39754 			exitRule();
39755 		}
39756 		return _localctx;
39757 	}
39758 
39759 	public static class ForXmlClauseContext extends ParserRuleContext {
39760 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
39761 		public TerminalNode EXPLICIT() { return getToken(SQLServerStatementParser.EXPLICIT, 0); }
39762 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
39763 		public TerminalNode RAW() { return getToken(SQLServerStatementParser.RAW, 0); }
39764 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
39765 		public CommonDirectivesForXmlContext commonDirectivesForXml() {
39766 			return getRuleContext(CommonDirectivesForXmlContext.class,0);
39767 		}
39768 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
39769 		public TerminalNode LP_(int i) {
39770 			return getToken(SQLServerStatementParser.LP_, i);
39771 		}
39772 		public List<StringLiteralsContext> stringLiterals() {
39773 			return getRuleContexts(StringLiteralsContext.class);
39774 		}
39775 		public StringLiteralsContext stringLiterals(int i) {
39776 			return getRuleContext(StringLiteralsContext.class,i);
39777 		}
39778 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
39779 		public TerminalNode RP_(int i) {
39780 			return getToken(SQLServerStatementParser.RP_, i);
39781 		}
39782 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39783 		public TerminalNode COMMA_(int i) {
39784 			return getToken(SQLServerStatementParser.COMMA_, i);
39785 		}
39786 		public TerminalNode ELEMENTS() { return getToken(SQLServerStatementParser.ELEMENTS, 0); }
39787 		public TerminalNode XMLDATA() { return getToken(SQLServerStatementParser.XMLDATA, 0); }
39788 		public TerminalNode XMLSCHEMA() { return getToken(SQLServerStatementParser.XMLSCHEMA, 0); }
39789 		public TerminalNode XSINIL() { return getToken(SQLServerStatementParser.XSINIL, 0); }
39790 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
39791 		public ForXmlClauseContext(ParserRuleContext parent, int invokingState) {
39792 			super(parent, invokingState);
39793 		}
39794 		@Override public int getRuleIndex() { return RULE_forXmlClause; }
39795 		@Override
39796 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39797 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForXmlClause(this);
39798 			else return visitor.visitChildren(this);
39799 		}
39800 	}
39801 
39802 	public final ForXmlClauseContext forXmlClause() throws RecognitionException {
39803 		ForXmlClauseContext _localctx = new ForXmlClauseContext(_ctx, getState());
39804 		enterRule(_localctx, 762, RULE_forXmlClause);
39805 		int _la;
39806 		try {
39807 			enterOuterAlt(_localctx, 1);
39808 			{
39809 			setState(5460);
39810 			match(XML);
39811 			setState(5519);
39812 			_errHandler.sync(this);
39813 			switch (_input.LA(1)) {
39814 			case AUTO:
39815 			case RAW:
39816 				{
39817 				setState(5469);
39818 				_errHandler.sync(this);
39819 				switch (_input.LA(1)) {
39820 				case RAW:
39821 					{
39822 					setState(5461);
39823 					match(RAW);
39824 					setState(5466);
39825 					_errHandler.sync(this);
39826 					_la = _input.LA(1);
39827 					if (_la==LP_) {
39828 						{
39829 						setState(5462);
39830 						match(LP_);
39831 						setState(5463);
39832 						stringLiterals();
39833 						setState(5464);
39834 						match(RP_);
39835 						}
39836 					}
39837 
39838 					}
39839 					break;
39840 				case AUTO:
39841 					{
39842 					setState(5468);
39843 					match(AUTO);
39844 					}
39845 					break;
39846 				default:
39847 					throw new NoViableAltException(this);
39848 				}
39849 				setState(5492);
39850 				_errHandler.sync(this);
39851 				switch ( getInterpreter().adaptivePredict(_input,630,_ctx) ) {
39852 				case 1:
39853 					{
39854 					setState(5471);
39855 					commonDirectivesForXml();
39856 					setState(5483);
39857 					_errHandler.sync(this);
39858 					switch ( getInterpreter().adaptivePredict(_input,627,_ctx) ) {
39859 					case 1:
39860 						{
39861 						setState(5472);
39862 						match(COMMA_);
39863 						setState(5481);
39864 						_errHandler.sync(this);
39865 						switch (_input.LA(1)) {
39866 						case XMLDATA:
39867 							{
39868 							setState(5473);
39869 							match(XMLDATA);
39870 							}
39871 							break;
39872 						case XMLSCHEMA:
39873 							{
39874 							setState(5474);
39875 							match(XMLSCHEMA);
39876 							setState(5479);
39877 							_errHandler.sync(this);
39878 							_la = _input.LA(1);
39879 							if (_la==LP_) {
39880 								{
39881 								setState(5475);
39882 								match(LP_);
39883 								setState(5476);
39884 								stringLiterals();
39885 								setState(5477);
39886 								match(RP_);
39887 								}
39888 							}
39889 
39890 							}
39891 							break;
39892 						default:
39893 							throw new NoViableAltException(this);
39894 						}
39895 						}
39896 						break;
39897 					}
39898 					setState(5490);
39899 					_errHandler.sync(this);
39900 					_la = _input.LA(1);
39901 					if (_la==COMMA_) {
39902 						{
39903 						setState(5485);
39904 						match(COMMA_);
39905 						setState(5486);
39906 						match(ELEMENTS);
39907 						setState(5488);
39908 						_errHandler.sync(this);
39909 						_la = _input.LA(1);
39910 						if (_la==XSINIL || _la==ABSENT) {
39911 							{
39912 							setState(5487);
39913 							_la = _input.LA(1);
39914 							if ( !(_la==XSINIL || _la==ABSENT) ) {
39915 							_errHandler.recoverInline(this);
39916 							}
39917 							else {
39918 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39919 								_errHandler.reportMatch(this);
39920 								consume();
39921 							}
39922 							}
39923 						}
39924 
39925 						}
39926 					}
39927 
39928 					}
39929 					break;
39930 				}
39931 				}
39932 				break;
39933 			case EXPLICIT:
39934 				{
39935 				setState(5494);
39936 				match(EXPLICIT);
39937 				setState(5500);
39938 				_errHandler.sync(this);
39939 				switch ( getInterpreter().adaptivePredict(_input,632,_ctx) ) {
39940 				case 1:
39941 					{
39942 					setState(5495);
39943 					commonDirectivesForXml();
39944 					setState(5498);
39945 					_errHandler.sync(this);
39946 					_la = _input.LA(1);
39947 					if (_la==COMMA_) {
39948 						{
39949 						setState(5496);
39950 						match(COMMA_);
39951 						setState(5497);
39952 						match(XMLDATA);
39953 						}
39954 					}
39955 
39956 					}
39957 					break;
39958 				}
39959 				}
39960 				break;
39961 			case PATH:
39962 				{
39963 				setState(5502);
39964 				match(PATH);
39965 				setState(5507);
39966 				_errHandler.sync(this);
39967 				_la = _input.LA(1);
39968 				if (_la==LP_) {
39969 					{
39970 					setState(5503);
39971 					match(LP_);
39972 					setState(5504);
39973 					stringLiterals();
39974 					setState(5505);
39975 					match(RP_);
39976 					}
39977 				}
39978 
39979 				setState(5517);
39980 				_errHandler.sync(this);
39981 				switch ( getInterpreter().adaptivePredict(_input,636,_ctx) ) {
39982 				case 1:
39983 					{
39984 					setState(5509);
39985 					commonDirectivesForXml();
39986 					setState(5515);
39987 					_errHandler.sync(this);
39988 					_la = _input.LA(1);
39989 					if (_la==COMMA_) {
39990 						{
39991 						setState(5510);
39992 						match(COMMA_);
39993 						setState(5511);
39994 						match(ELEMENTS);
39995 						setState(5513);
39996 						_errHandler.sync(this);
39997 						_la = _input.LA(1);
39998 						if (_la==XSINIL || _la==ABSENT) {
39999 							{
40000 							setState(5512);
40001 							_la = _input.LA(1);
40002 							if ( !(_la==XSINIL || _la==ABSENT) ) {
40003 							_errHandler.recoverInline(this);
40004 							}
40005 							else {
40006 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40007 								_errHandler.reportMatch(this);
40008 								consume();
40009 							}
40010 							}
40011 						}
40012 
40013 						}
40014 					}
40015 
40016 					}
40017 					break;
40018 				}
40019 				}
40020 				break;
40021 			default:
40022 				throw new NoViableAltException(this);
40023 			}
40024 			}
40025 		}
40026 		catch (RecognitionException re) {
40027 			_localctx.exception = re;
40028 			_errHandler.reportError(this, re);
40029 			_errHandler.recover(this, re);
40030 		}
40031 		finally {
40032 			exitRule();
40033 		}
40034 		return _localctx;
40035 	}
40036 
40037 	public static class CommonDirectivesForXmlContext extends ParserRuleContext {
40038 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40039 		public TerminalNode COMMA_(int i) {
40040 			return getToken(SQLServerStatementParser.COMMA_, i);
40041 		}
40042 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
40043 		public TerminalNode BASE64() { return getToken(SQLServerStatementParser.BASE64, 0); }
40044 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
40045 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
40046 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40047 		public StringLiteralsContext stringLiterals() {
40048 			return getRuleContext(StringLiteralsContext.class,0);
40049 		}
40050 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40051 		public CommonDirectivesForXmlContext(ParserRuleContext parent, int invokingState) {
40052 			super(parent, invokingState);
40053 		}
40054 		@Override public int getRuleIndex() { return RULE_commonDirectivesForXml; }
40055 		@Override
40056 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40057 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonDirectivesForXml(this);
40058 			else return visitor.visitChildren(this);
40059 		}
40060 	}
40061 
40062 	public final CommonDirectivesForXmlContext commonDirectivesForXml() throws RecognitionException {
40063 		CommonDirectivesForXmlContext _localctx = new CommonDirectivesForXmlContext(_ctx, getState());
40064 		enterRule(_localctx, 764, RULE_commonDirectivesForXml);
40065 		int _la;
40066 		try {
40067 			enterOuterAlt(_localctx, 1);
40068 			{
40069 			setState(5524);
40070 			_errHandler.sync(this);
40071 			switch ( getInterpreter().adaptivePredict(_input,638,_ctx) ) {
40072 			case 1:
40073 				{
40074 				setState(5521);
40075 				match(COMMA_);
40076 				setState(5522);
40077 				match(BINARY);
40078 				setState(5523);
40079 				match(BASE64);
40080 				}
40081 				break;
40082 			}
40083 			setState(5528);
40084 			_errHandler.sync(this);
40085 			switch ( getInterpreter().adaptivePredict(_input,639,_ctx) ) {
40086 			case 1:
40087 				{
40088 				setState(5526);
40089 				match(COMMA_);
40090 				setState(5527);
40091 				match(TYPE);
40092 				}
40093 				break;
40094 			}
40095 			setState(5538);
40096 			_errHandler.sync(this);
40097 			switch ( getInterpreter().adaptivePredict(_input,641,_ctx) ) {
40098 			case 1:
40099 				{
40100 				setState(5530);
40101 				match(COMMA_);
40102 				setState(5531);
40103 				match(ROOT);
40104 				setState(5536);
40105 				_errHandler.sync(this);
40106 				_la = _input.LA(1);
40107 				if (_la==LP_) {
40108 					{
40109 					setState(5532);
40110 					match(LP_);
40111 					setState(5533);
40112 					stringLiterals();
40113 					setState(5534);
40114 					match(RP_);
40115 					}
40116 				}
40117 
40118 				}
40119 				break;
40120 			}
40121 			}
40122 		}
40123 		catch (RecognitionException re) {
40124 			_localctx.exception = re;
40125 			_errHandler.reportError(this, re);
40126 			_errHandler.recover(this, re);
40127 		}
40128 		finally {
40129 			exitRule();
40130 		}
40131 		return _localctx;
40132 	}
40133 
40134 	public static class ForJsonClauseContext extends ParserRuleContext {
40135 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
40136 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
40137 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
40138 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40139 		public TerminalNode COMMA_(int i) {
40140 			return getToken(SQLServerStatementParser.COMMA_, i);
40141 		}
40142 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
40143 		public TerminalNode INCLUDE_NULL_VALUES() { return getToken(SQLServerStatementParser.INCLUDE_NULL_VALUES, 0); }
40144 		public TerminalNode WITHOUT_ARRAY_WRAPPER() { return getToken(SQLServerStatementParser.WITHOUT_ARRAY_WRAPPER, 0); }
40145 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40146 		public StringLiteralsContext stringLiterals() {
40147 			return getRuleContext(StringLiteralsContext.class,0);
40148 		}
40149 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40150 		public ForJsonClauseContext(ParserRuleContext parent, int invokingState) {
40151 			super(parent, invokingState);
40152 		}
40153 		@Override public int getRuleIndex() { return RULE_forJsonClause; }
40154 		@Override
40155 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40156 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForJsonClause(this);
40157 			else return visitor.visitChildren(this);
40158 		}
40159 	}
40160 
40161 	public final ForJsonClauseContext forJsonClause() throws RecognitionException {
40162 		ForJsonClauseContext _localctx = new ForJsonClauseContext(_ctx, getState());
40163 		enterRule(_localctx, 766, RULE_forJsonClause);
40164 		int _la;
40165 		try {
40166 			enterOuterAlt(_localctx, 1);
40167 			{
40168 			setState(5540);
40169 			match(JSON);
40170 			{
40171 			setState(5541);
40172 			_la = _input.LA(1);
40173 			if ( !(_la==AUTO || _la==PATH) ) {
40174 			_errHandler.recoverInline(this);
40175 			}
40176 			else {
40177 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40178 				_errHandler.reportMatch(this);
40179 				consume();
40180 			}
40181 			setState(5560);
40182 			_errHandler.sync(this);
40183 			switch ( getInterpreter().adaptivePredict(_input,646,_ctx) ) {
40184 			case 1:
40185 				{
40186 				setState(5550);
40187 				_errHandler.sync(this);
40188 				switch ( getInterpreter().adaptivePredict(_input,643,_ctx) ) {
40189 				case 1:
40190 					{
40191 					setState(5542);
40192 					match(COMMA_);
40193 					setState(5543);
40194 					match(ROOT);
40195 					setState(5548);
40196 					_errHandler.sync(this);
40197 					_la = _input.LA(1);
40198 					if (_la==LP_) {
40199 						{
40200 						setState(5544);
40201 						match(LP_);
40202 						setState(5545);
40203 						stringLiterals();
40204 						setState(5546);
40205 						match(RP_);
40206 						}
40207 					}
40208 
40209 					}
40210 					break;
40211 				}
40212 				setState(5554);
40213 				_errHandler.sync(this);
40214 				switch ( getInterpreter().adaptivePredict(_input,644,_ctx) ) {
40215 				case 1:
40216 					{
40217 					setState(5552);
40218 					match(COMMA_);
40219 					setState(5553);
40220 					match(INCLUDE_NULL_VALUES);
40221 					}
40222 					break;
40223 				}
40224 				setState(5558);
40225 				_errHandler.sync(this);
40226 				_la = _input.LA(1);
40227 				if (_la==COMMA_) {
40228 					{
40229 					setState(5556);
40230 					match(COMMA_);
40231 					setState(5557);
40232 					match(WITHOUT_ARRAY_WRAPPER);
40233 					}
40234 				}
40235 
40236 				}
40237 				break;
40238 			}
40239 			}
40240 			}
40241 		}
40242 		catch (RecognitionException re) {
40243 			_localctx.exception = re;
40244 			_errHandler.reportError(this, re);
40245 			_errHandler.recover(this, re);
40246 		}
40247 		finally {
40248 			exitRule();
40249 		}
40250 		return _localctx;
40251 	}
40252 
40253 	public static class SelectWithClauseContext extends ParserRuleContext {
40254 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40255 		public XmlNamespacesClauseContext xmlNamespacesClause() {
40256 			return getRuleContext(XmlNamespacesClauseContext.class,0);
40257 		}
40258 		public CteClauseSetContext cteClauseSet() {
40259 			return getRuleContext(CteClauseSetContext.class,0);
40260 		}
40261 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
40262 		public SelectWithClauseContext(ParserRuleContext parent, int invokingState) {
40263 			super(parent, invokingState);
40264 		}
40265 		@Override public int getRuleIndex() { return RULE_selectWithClause; }
40266 		@Override
40267 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40268 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectWithClause(this);
40269 			else return visitor.visitChildren(this);
40270 		}
40271 	}
40272 
40273 	public final SelectWithClauseContext selectWithClause() throws RecognitionException {
40274 		SelectWithClauseContext _localctx = new SelectWithClauseContext(_ctx, getState());
40275 		enterRule(_localctx, 768, RULE_selectWithClause);
40276 		int _la;
40277 		try {
40278 			enterOuterAlt(_localctx, 1);
40279 			{
40280 			setState(5562);
40281 			match(WITH);
40282 			setState(5567);
40283 			_errHandler.sync(this);
40284 			_la = _input.LA(1);
40285 			if (_la==XMLNAMESPACES) {
40286 				{
40287 				setState(5563);
40288 				xmlNamespacesClause();
40289 				setState(5565);
40290 				_errHandler.sync(this);
40291 				_la = _input.LA(1);
40292 				if (_la==COMMA_) {
40293 					{
40294 					setState(5564);
40295 					match(COMMA_);
40296 					}
40297 				}
40298 
40299 				}
40300 			}
40301 
40302 			setState(5570);
40303 			_errHandler.sync(this);
40304 			_la = _input.LA(1);
40305 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (SUBSTRING - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (QUARTER - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)) | (1L << (TOP - 184)) | (1L << (ROW - 184)) | (1L << (ROWS - 184)) | (1L << (XOR - 184)) | (1L << (ALWAYS - 184)) | (1L << (ROLE - 184)) | (1L << (START - 184)) | (1L << (ALGORITHM - 184)) | (1L << (AUTO - 184)) | (1L << (BLOCKERS - 184)) | (1L << (CLUSTERED - 184)) | (1L << (NONCLUSTERED - 184)) | (1L << (COLUMNSTORE - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)) | (1L << (RANDOMIZED - 248)) | (1L << (RANGE - 248)) | (1L << (REBUILD - 248)) | (1L << (REPLICATE - 248)) | (1L << (REPLICATION - 248)) | (1L << (RESUMABLE - 248)) | (1L << (ROWGUIDCOL - 248)) | (1L << (SAVE - 248)) | (1L << (SELF - 248)) | (1L << (SPARSE - 248)) | (1L << (SWITCH - 248)) | (1L << (TRAN - 248)) | (1L << (TRANCOUNT - 248)) | (1L << (CONTROL - 248)) | (1L << (CONCAT - 248)) | (1L << (TAKE - 248)) | (1L << (OWNERSHIP - 248)) | (1L << (DEFINITION - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)) | (1L << (DATA - 312)) | (1L << (SOURCE - 312)) | (1L << (FILE - 312)) | (1L << (FORMAT - 312)) | (1L << (LIBRARY - 312)) | (1L << (FULLTEXT - 312)) | (1L << (MASK - 312)) | (1L << (UNMASK - 312)) | (1L << (MESSAGE - 312)) | (1L << (REMOTE - 312)) | (1L << (BINDING - 312)) | (1L << (ROUTE - 312)) | (1L << (SECURITY - 312)) | (1L << (POLICY - 312)) | (1L << (AGGREGATE - 312)) | (1L << (QUEUE - 312)) | (1L << (RULE - 312)) | (1L << (SYNONYM - 312)) | (1L << (COLLECTION - 312)) | (1L << (SCRIPT - 312)) | (1L << (KILL - 312)) | (1L << (BACKUP - 312)) | (1L << (LOG - 312)) | (1L << (SHOWPLAN - 312)) | (1L << (SUBSCRIBE - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILTER_PREDICATE - 376)) | (1L << (HISTORY_RETENTION_PERIOD - 376)) | (1L << (HISTORY_TABLE - 376)) | (1L << (LOCK_ESCALATION - 376)) | (1L << (DROP_EXISTING - 376)) | (1L << (ROW_NUMBER - 376)) | (1L << (FIRST - 376)) | (1L << (DATETIME2 - 376)))) != 0) || ((((_la - 441)) & ~0x3f) == 0 && ((1L << (_la - 441)) & ((1L << (OUTPUT - 441)) | (1L << (INSERTED - 441)) | (1L << (DELETED - 441)) | (1L << (FILENAME - 441)) | (1L << (MAXSIZE - 441)) | (1L << (FILEGROWTH - 441)) | (1L << (UNLIMITED - 441)) | (1L << (KB - 441)) | (1L << (MB - 441)) | (1L << (GB - 441)) | (1L << (TB - 441)) | (1L << (MEMORY_OPTIMIZED_DATA - 441)) | (1L << (FILEGROUP - 441)) | (1L << (NON_TRANSACTED_ACCESS - 441)) | (1L << (DB_CHAINING - 441)) | (1L << (TRUSTWORTHY - 441)) | (1L << (FORWARD_ONLY - 441)) | (1L << (KEYSET - 441)) | (1L << (FAST_FORWARD - 441)) | (1L << (SCROLL_LOCKS - 441)) | (1L << (OPTIMISTIC - 441)) | (1L << (TYPE_WARNING - 441)) | (1L << (SCHEMABINDING - 441)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (CALLER - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 505)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 505)) | (1L << (IMMEDIATE - 505)) | (1L << (NO_WAIT - 505)) | (1L << (TARGET_RECOVERY_TIME - 505)) | (1L << (SECONDS - 505)) | (1L << (HONOR_BROKER_PRIORITY - 505)) | (1L << (ERROR_BROKER_CONVERSATIONS - 505)) | (1L << (NEW_BROKER - 505)) | (1L << (DISABLE_BROKER - 505)) | (1L << (ENABLE_BROKER - 505)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 505)) | (1L << (READ_COMMITTED_SNAPSHOT - 505)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 505)) | (1L << (RECURSIVE_TRIGGERS - 505)) | (1L << (QUOTED_IDENTIFIER - 505)) | (1L << (NUMERIC_ROUNDABORT - 505)) | (1L << (CONCAT_NULL_YIELDS_NULL - 505)) | (1L << (COMPATIBILITY_LEVEL - 505)) | (1L << (ARITHABORT - 505)) | (1L << (ANSI_WARNINGS - 505)) | (1L << (ANSI_PADDING - 505)) | (1L << (ANSI_NULLS - 505)))) != 0) || ((((_la - 569)) & ~0x3f) == 0 && ((1L << (_la - 569)) & ((1L << (ANSI_NULL_DEFAULT - 569)) | (1L << (PAGE_VERIFY - 569)) | (1L << (CHECKSUM - 569)) | (1L << (TORN_PAGE_DETECTION - 569)) | (1L << (BULK_LOGGED - 569)) | (1L << (RECOVERY - 569)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 569)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 569)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 569)) | (1L << (EXECUTION_COUNT - 569)) | (1L << (QUERY_CAPTURE_POLICY - 569)) | (1L << (WAIT_STATS_CAPTURE_MODE - 569)) | (1L << (MAX_PLANS_PER_QUERY - 569)) | (1L << (QUERY_CAPTURE_MODE - 569)) | (1L << (SIZE_BASED_CLEANUP_MODE - 569)) | (1L << (INTERVAL_LENGTH_MINUTES - 569)) | (1L << (MAX_STORAGE_SIZE_MB - 569)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 569)) | (1L << (CLEANUP_POLICY - 569)) | (1L << (CUSTOM - 569)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 569)) | (1L << (OPERATION_MODE - 569)) | (1L << (QUERY_STORE - 569)) | (1L << (CURSOR_DEFAULT - 569)) | (1L << (GLOBAL - 569)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 569)) | (1L << (HOURS - 569)) | (1L << (CHANGE_RETENTION - 569)) | (1L << (AUTO_CLEANUP - 569)) | (1L << (CHANGE_TRACKING - 569)) | (1L << (AUTOMATIC_TUNING - 569)) | (1L << (FORCE_LAST_GOOD_PLAN - 569)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 569)) | (1L << (AUTO_UPDATE_STATISTICS - 569)) | (1L << (AUTO_SHRINK - 569)) | (1L << (AUTO_CREATE_STATISTICS - 569)) | (1L << (INCREMENTAL - 569)) | (1L << (AUTO_CLOSE - 569)) | (1L << (DATA_RETENTION - 569)) | (1L << (TEMPORAL_HISTORY_RETENTION - 569)) | (1L << (EDITION - 569)) | (1L << (MIXED_PAGE_ALLOCATION - 569)) | (1L << (DISABLED - 569)) | (1L << (ALLOWED - 569)) | (1L << (HADR - 569)) | (1L << (MULTI_USER - 569)) | (1L << (RESTRICTED_USER - 569)) | (1L << (SINGLE_USER - 569)) | (1L << (OFFLINE - 569)) | (1L << (EMERGENCY - 569)) | (1L << (SUSPEND - 569)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 569)) | (1L << (ELASTIC_POOL - 569)) | (1L << (SERVICE_OBJECTIVE - 569)) | (1L << (DATABASE_NAME - 569)) | (1L << (ALLOW_CONNECTIONS - 569)) | (1L << (GEO - 569)) | (1L << (NAMED - 569)) | (1L << (DATEFIRST - 569)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 569)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 569)) | (1L << (SECONDARY - 569)) | (1L << (FAILOVER - 569)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 569)))) != 0) || ((((_la - 633)) & ~0x3f) == 0 && ((1L << (_la - 633)) & ((1L << (DEFAULT_LANGUAGE - 633)) | (1L << (INLINE - 633)) | (1L << (NESTED_TRIGGERS - 633)) | (1L << (TRANSFORM_NOISE_WORDS - 633)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 633)) | (1L << (PERSISTENT_LOG_BUFFER - 633)) | (1L << (DIRECTORY_NAME - 633)) | (1L << (DATEFORMAT - 633)) | (1L << (DELAYED_DURABILITY - 633)) | (1L << (AUTHORIZATION - 633)) | (1L << (TRANSFER - 633)) | (1L << (PROVIDER - 633)) | (1L << (SEARCH - 633)) | (1L << (MEMBER - 633)) | (1L << (IDENTIFIER_ - 633)) | (1L << (DELIMITED_IDENTIFIER_ - 633)))) != 0)) {
40306 				{
40307 				setState(5569);
40308 				cteClauseSet();
40309 				}
40310 			}
40311 
40312 			}
40313 		}
40314 		catch (RecognitionException re) {
40315 			_localctx.exception = re;
40316 			_errHandler.reportError(this, re);
40317 			_errHandler.recover(this, re);
40318 		}
40319 		finally {
40320 			exitRule();
40321 		}
40322 		return _localctx;
40323 	}
40324 
40325 	public static class XmlNamespacesClauseContext extends ParserRuleContext {
40326 		public TerminalNode XMLNAMESPACES() { return getToken(SQLServerStatementParser.XMLNAMESPACES, 0); }
40327 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40328 		public List<XmlNamespaceDeclarationItemContext> xmlNamespaceDeclarationItem() {
40329 			return getRuleContexts(XmlNamespaceDeclarationItemContext.class);
40330 		}
40331 		public XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem(int i) {
40332 			return getRuleContext(XmlNamespaceDeclarationItemContext.class,i);
40333 		}
40334 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40335 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40336 		public TerminalNode COMMA_(int i) {
40337 			return getToken(SQLServerStatementParser.COMMA_, i);
40338 		}
40339 		public XmlNamespacesClauseContext(ParserRuleContext parent, int invokingState) {
40340 			super(parent, invokingState);
40341 		}
40342 		@Override public int getRuleIndex() { return RULE_xmlNamespacesClause; }
40343 		@Override
40344 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40345 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacesClause(this);
40346 			else return visitor.visitChildren(this);
40347 		}
40348 	}
40349 
40350 	public final XmlNamespacesClauseContext xmlNamespacesClause() throws RecognitionException {
40351 		XmlNamespacesClauseContext _localctx = new XmlNamespacesClauseContext(_ctx, getState());
40352 		enterRule(_localctx, 770, RULE_xmlNamespacesClause);
40353 		int _la;
40354 		try {
40355 			enterOuterAlt(_localctx, 1);
40356 			{
40357 			setState(5572);
40358 			match(XMLNAMESPACES);
40359 			setState(5573);
40360 			match(LP_);
40361 			setState(5574);
40362 			xmlNamespaceDeclarationItem();
40363 			setState(5579);
40364 			_errHandler.sync(this);
40365 			_la = _input.LA(1);
40366 			while (_la==COMMA_) {
40367 				{
40368 				{
40369 				setState(5575);
40370 				match(COMMA_);
40371 				setState(5576);
40372 				xmlNamespaceDeclarationItem();
40373 				}
40374 				}
40375 				setState(5581);
40376 				_errHandler.sync(this);
40377 				_la = _input.LA(1);
40378 			}
40379 			setState(5582);
40380 			match(RP_);
40381 			}
40382 		}
40383 		catch (RecognitionException re) {
40384 			_localctx.exception = re;
40385 			_errHandler.reportError(this, re);
40386 			_errHandler.recover(this, re);
40387 		}
40388 		finally {
40389 			exitRule();
40390 		}
40391 		return _localctx;
40392 	}
40393 
40394 	public static class XmlNamespaceDeclarationItemContext extends ParserRuleContext {
40395 		public XmlNamespaceUriContext xmlNamespaceUri() {
40396 			return getRuleContext(XmlNamespaceUriContext.class,0);
40397 		}
40398 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40399 		public XmlNamespacePrefixContext xmlNamespacePrefix() {
40400 			return getRuleContext(XmlNamespacePrefixContext.class,0);
40401 		}
40402 		public XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() {
40403 			return getRuleContext(XmlDefaultNamespaceDeclarationItemContext.class,0);
40404 		}
40405 		public XmlNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
40406 			super(parent, invokingState);
40407 		}
40408 		@Override public int getRuleIndex() { return RULE_xmlNamespaceDeclarationItem; }
40409 		@Override
40410 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40411 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceDeclarationItem(this);
40412 			else return visitor.visitChildren(this);
40413 		}
40414 	}
40415 
40416 	public final XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem() throws RecognitionException {
40417 		XmlNamespaceDeclarationItemContext _localctx = new XmlNamespaceDeclarationItemContext(_ctx, getState());
40418 		enterRule(_localctx, 772, RULE_xmlNamespaceDeclarationItem);
40419 		try {
40420 			setState(5589);
40421 			_errHandler.sync(this);
40422 			switch (_input.LA(1)) {
40423 			case STRING_:
40424 			case NCHAR_TEXT:
40425 				enterOuterAlt(_localctx, 1);
40426 				{
40427 				setState(5584);
40428 				xmlNamespaceUri();
40429 				setState(5585);
40430 				match(AS);
40431 				setState(5586);
40432 				xmlNamespacePrefix();
40433 				}
40434 				break;
40435 			case DEFAULT:
40436 				enterOuterAlt(_localctx, 2);
40437 				{
40438 				setState(5588);
40439 				xmlDefaultNamespaceDeclarationItem();
40440 				}
40441 				break;
40442 			default:
40443 				throw new NoViableAltException(this);
40444 			}
40445 		}
40446 		catch (RecognitionException re) {
40447 			_localctx.exception = re;
40448 			_errHandler.reportError(this, re);
40449 			_errHandler.recover(this, re);
40450 		}
40451 		finally {
40452 			exitRule();
40453 		}
40454 		return _localctx;
40455 	}
40456 
40457 	public static class XmlNamespaceUriContext extends ParserRuleContext {
40458 		public StringLiteralsContext stringLiterals() {
40459 			return getRuleContext(StringLiteralsContext.class,0);
40460 		}
40461 		public XmlNamespaceUriContext(ParserRuleContext parent, int invokingState) {
40462 			super(parent, invokingState);
40463 		}
40464 		@Override public int getRuleIndex() { return RULE_xmlNamespaceUri; }
40465 		@Override
40466 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40467 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceUri(this);
40468 			else return visitor.visitChildren(this);
40469 		}
40470 	}
40471 
40472 	public final XmlNamespaceUriContext xmlNamespaceUri() throws RecognitionException {
40473 		XmlNamespaceUriContext _localctx = new XmlNamespaceUriContext(_ctx, getState());
40474 		enterRule(_localctx, 774, RULE_xmlNamespaceUri);
40475 		try {
40476 			enterOuterAlt(_localctx, 1);
40477 			{
40478 			setState(5591);
40479 			stringLiterals();
40480 			}
40481 		}
40482 		catch (RecognitionException re) {
40483 			_localctx.exception = re;
40484 			_errHandler.reportError(this, re);
40485 			_errHandler.recover(this, re);
40486 		}
40487 		finally {
40488 			exitRule();
40489 		}
40490 		return _localctx;
40491 	}
40492 
40493 	public static class XmlNamespacePrefixContext extends ParserRuleContext {
40494 		public IdentifierContext identifier() {
40495 			return getRuleContext(IdentifierContext.class,0);
40496 		}
40497 		public XmlNamespacePrefixContext(ParserRuleContext parent, int invokingState) {
40498 			super(parent, invokingState);
40499 		}
40500 		@Override public int getRuleIndex() { return RULE_xmlNamespacePrefix; }
40501 		@Override
40502 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40503 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacePrefix(this);
40504 			else return visitor.visitChildren(this);
40505 		}
40506 	}
40507 
40508 	public final XmlNamespacePrefixContext xmlNamespacePrefix() throws RecognitionException {
40509 		XmlNamespacePrefixContext _localctx = new XmlNamespacePrefixContext(_ctx, getState());
40510 		enterRule(_localctx, 776, RULE_xmlNamespacePrefix);
40511 		try {
40512 			enterOuterAlt(_localctx, 1);
40513 			{
40514 			setState(5593);
40515 			identifier();
40516 			}
40517 		}
40518 		catch (RecognitionException re) {
40519 			_localctx.exception = re;
40520 			_errHandler.reportError(this, re);
40521 			_errHandler.recover(this, re);
40522 		}
40523 		finally {
40524 			exitRule();
40525 		}
40526 		return _localctx;
40527 	}
40528 
40529 	public static class XmlDefaultNamespaceDeclarationItemContext extends ParserRuleContext {
40530 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
40531 		public XmlNamespaceUriContext xmlNamespaceUri() {
40532 			return getRuleContext(XmlNamespaceUriContext.class,0);
40533 		}
40534 		public XmlDefaultNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
40535 			super(parent, invokingState);
40536 		}
40537 		@Override public int getRuleIndex() { return RULE_xmlDefaultNamespaceDeclarationItem; }
40538 		@Override
40539 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40540 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlDefaultNamespaceDeclarationItem(this);
40541 			else return visitor.visitChildren(this);
40542 		}
40543 	}
40544 
40545 	public final XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() throws RecognitionException {
40546 		XmlDefaultNamespaceDeclarationItemContext _localctx = new XmlDefaultNamespaceDeclarationItemContext(_ctx, getState());
40547 		enterRule(_localctx, 778, RULE_xmlDefaultNamespaceDeclarationItem);
40548 		try {
40549 			enterOuterAlt(_localctx, 1);
40550 			{
40551 			setState(5595);
40552 			match(DEFAULT);
40553 			setState(5596);
40554 			xmlNamespaceUri();
40555 			}
40556 		}
40557 		catch (RecognitionException re) {
40558 			_localctx.exception = re;
40559 			_errHandler.reportError(this, re);
40560 			_errHandler.recover(this, re);
40561 		}
40562 		finally {
40563 			exitRule();
40564 		}
40565 		return _localctx;
40566 	}
40567 
40568 	public static class GrantContext extends ParserRuleContext {
40569 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
40570 		public GrantClassPrivilegesClauseContext grantClassPrivilegesClause() {
40571 			return getRuleContext(GrantClassPrivilegesClauseContext.class,0);
40572 		}
40573 		public GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() {
40574 			return getRuleContext(GrantClassTypePrivilegesClauseContext.class,0);
40575 		}
40576 		public GrantContext(ParserRuleContext parent, int invokingState) {
40577 			super(parent, invokingState);
40578 		}
40579 		@Override public int getRuleIndex() { return RULE_grant; }
40580 		@Override
40581 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40582 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrant(this);
40583 			else return visitor.visitChildren(this);
40584 		}
40585 	}
40586 
40587 	public final GrantContext grant() throws RecognitionException {
40588 		GrantContext _localctx = new GrantContext(_ctx, getState());
40589 		enterRule(_localctx, 780, RULE_grant);
40590 		try {
40591 			enterOuterAlt(_localctx, 1);
40592 			{
40593 			setState(5598);
40594 			match(GRANT);
40595 			setState(5601);
40596 			_errHandler.sync(this);
40597 			switch ( getInterpreter().adaptivePredict(_input,652,_ctx) ) {
40598 			case 1:
40599 				{
40600 				setState(5599);
40601 				grantClassPrivilegesClause();
40602 				}
40603 				break;
40604 			case 2:
40605 				{
40606 				setState(5600);
40607 				grantClassTypePrivilegesClause();
40608 				}
40609 				break;
40610 			}
40611 			}
40612 		}
40613 		catch (RecognitionException re) {
40614 			_localctx.exception = re;
40615 			_errHandler.reportError(this, re);
40616 			_errHandler.recover(this, re);
40617 		}
40618 		finally {
40619 			exitRule();
40620 		}
40621 		return _localctx;
40622 	}
40623 
40624 	public static class GrantClassPrivilegesClauseContext extends ParserRuleContext {
40625 		public ClassPrivilegesContext classPrivileges() {
40626 			return getRuleContext(ClassPrivilegesContext.class,0);
40627 		}
40628 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40629 		public List<PrincipalContext> principal() {
40630 			return getRuleContexts(PrincipalContext.class);
40631 		}
40632 		public PrincipalContext principal(int i) {
40633 			return getRuleContext(PrincipalContext.class,i);
40634 		}
40635 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40636 		public OnClassClauseContext onClassClause() {
40637 			return getRuleContext(OnClassClauseContext.class,0);
40638 		}
40639 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40640 		public TerminalNode COMMA_(int i) {
40641 			return getToken(SQLServerStatementParser.COMMA_, i);
40642 		}
40643 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40644 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
40645 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
40646 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40647 		public GrantClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40648 			super(parent, invokingState);
40649 		}
40650 		@Override public int getRuleIndex() { return RULE_grantClassPrivilegesClause; }
40651 		@Override
40652 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40653 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassPrivilegesClause(this);
40654 			else return visitor.visitChildren(this);
40655 		}
40656 	}
40657 
40658 	public final GrantClassPrivilegesClauseContext grantClassPrivilegesClause() throws RecognitionException {
40659 		GrantClassPrivilegesClauseContext _localctx = new GrantClassPrivilegesClauseContext(_ctx, getState());
40660 		enterRule(_localctx, 782, RULE_grantClassPrivilegesClause);
40661 		int _la;
40662 		try {
40663 			enterOuterAlt(_localctx, 1);
40664 			{
40665 			setState(5603);
40666 			classPrivileges();
40667 			setState(5606);
40668 			_errHandler.sync(this);
40669 			_la = _input.LA(1);
40670 			if (_la==ON) {
40671 				{
40672 				setState(5604);
40673 				match(ON);
40674 				setState(5605);
40675 				onClassClause();
40676 				}
40677 			}
40678 
40679 			setState(5608);
40680 			match(TO);
40681 			setState(5609);
40682 			principal();
40683 			setState(5614);
40684 			_errHandler.sync(this);
40685 			_la = _input.LA(1);
40686 			while (_la==COMMA_) {
40687 				{
40688 				{
40689 				setState(5610);
40690 				match(COMMA_);
40691 				setState(5611);
40692 				principal();
40693 				}
40694 				}
40695 				setState(5616);
40696 				_errHandler.sync(this);
40697 				_la = _input.LA(1);
40698 			}
40699 			setState(5620);
40700 			_errHandler.sync(this);
40701 			_la = _input.LA(1);
40702 			if (_la==WITH) {
40703 				{
40704 				setState(5617);
40705 				match(WITH);
40706 				setState(5618);
40707 				match(GRANT);
40708 				setState(5619);
40709 				match(OPTION);
40710 				}
40711 			}
40712 
40713 			setState(5624);
40714 			_errHandler.sync(this);
40715 			_la = _input.LA(1);
40716 			if (_la==AS) {
40717 				{
40718 				setState(5622);
40719 				match(AS);
40720 				setState(5623);
40721 				principal();
40722 				}
40723 			}
40724 
40725 			}
40726 		}
40727 		catch (RecognitionException re) {
40728 			_localctx.exception = re;
40729 			_errHandler.reportError(this, re);
40730 			_errHandler.recover(this, re);
40731 		}
40732 		finally {
40733 			exitRule();
40734 		}
40735 		return _localctx;
40736 	}
40737 
40738 	public static class GrantClassTypePrivilegesClauseContext extends ParserRuleContext {
40739 		public ClassTypePrivilegesContext classTypePrivileges() {
40740 			return getRuleContext(ClassTypePrivilegesContext.class,0);
40741 		}
40742 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40743 		public List<PrincipalContext> principal() {
40744 			return getRuleContexts(PrincipalContext.class);
40745 		}
40746 		public PrincipalContext principal(int i) {
40747 			return getRuleContext(PrincipalContext.class,i);
40748 		}
40749 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40750 		public OnClassTypeClauseContext onClassTypeClause() {
40751 			return getRuleContext(OnClassTypeClauseContext.class,0);
40752 		}
40753 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40754 		public TerminalNode COMMA_(int i) {
40755 			return getToken(SQLServerStatementParser.COMMA_, i);
40756 		}
40757 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40758 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
40759 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
40760 		public GrantClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40761 			super(parent, invokingState);
40762 		}
40763 		@Override public int getRuleIndex() { return RULE_grantClassTypePrivilegesClause; }
40764 		@Override
40765 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40766 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassTypePrivilegesClause(this);
40767 			else return visitor.visitChildren(this);
40768 		}
40769 	}
40770 
40771 	public final GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() throws RecognitionException {
40772 		GrantClassTypePrivilegesClauseContext _localctx = new GrantClassTypePrivilegesClauseContext(_ctx, getState());
40773 		enterRule(_localctx, 784, RULE_grantClassTypePrivilegesClause);
40774 		int _la;
40775 		try {
40776 			enterOuterAlt(_localctx, 1);
40777 			{
40778 			setState(5626);
40779 			classTypePrivileges();
40780 			setState(5629);
40781 			_errHandler.sync(this);
40782 			_la = _input.LA(1);
40783 			if (_la==ON) {
40784 				{
40785 				setState(5627);
40786 				match(ON);
40787 				setState(5628);
40788 				onClassTypeClause();
40789 				}
40790 			}
40791 
40792 			setState(5631);
40793 			match(TO);
40794 			setState(5632);
40795 			principal();
40796 			setState(5637);
40797 			_errHandler.sync(this);
40798 			_la = _input.LA(1);
40799 			while (_la==COMMA_) {
40800 				{
40801 				{
40802 				setState(5633);
40803 				match(COMMA_);
40804 				setState(5634);
40805 				principal();
40806 				}
40807 				}
40808 				setState(5639);
40809 				_errHandler.sync(this);
40810 				_la = _input.LA(1);
40811 			}
40812 			setState(5643);
40813 			_errHandler.sync(this);
40814 			_la = _input.LA(1);
40815 			if (_la==WITH) {
40816 				{
40817 				setState(5640);
40818 				match(WITH);
40819 				setState(5641);
40820 				match(GRANT);
40821 				setState(5642);
40822 				match(OPTION);
40823 				}
40824 			}
40825 
40826 			}
40827 		}
40828 		catch (RecognitionException re) {
40829 			_localctx.exception = re;
40830 			_errHandler.reportError(this, re);
40831 			_errHandler.recover(this, re);
40832 		}
40833 		finally {
40834 			exitRule();
40835 		}
40836 		return _localctx;
40837 	}
40838 
40839 	public static class ClassPrivilegesContext extends ParserRuleContext {
40840 		public List<PrivilegeTypeContext> privilegeType() {
40841 			return getRuleContexts(PrivilegeTypeContext.class);
40842 		}
40843 		public PrivilegeTypeContext privilegeType(int i) {
40844 			return getRuleContext(PrivilegeTypeContext.class,i);
40845 		}
40846 		public List<ColumnNamesContext> columnNames() {
40847 			return getRuleContexts(ColumnNamesContext.class);
40848 		}
40849 		public ColumnNamesContext columnNames(int i) {
40850 			return getRuleContext(ColumnNamesContext.class,i);
40851 		}
40852 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40853 		public TerminalNode COMMA_(int i) {
40854 			return getToken(SQLServerStatementParser.COMMA_, i);
40855 		}
40856 		public ClassPrivilegesContext(ParserRuleContext parent, int invokingState) {
40857 			super(parent, invokingState);
40858 		}
40859 		@Override public int getRuleIndex() { return RULE_classPrivileges; }
40860 		@Override
40861 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40862 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassPrivileges(this);
40863 			else return visitor.visitChildren(this);
40864 		}
40865 	}
40866 
40867 	public final ClassPrivilegesContext classPrivileges() throws RecognitionException {
40868 		ClassPrivilegesContext _localctx = new ClassPrivilegesContext(_ctx, getState());
40869 		enterRule(_localctx, 786, RULE_classPrivileges);
40870 		int _la;
40871 		try {
40872 			enterOuterAlt(_localctx, 1);
40873 			{
40874 			setState(5645);
40875 			privilegeType();
40876 			setState(5647);
40877 			_errHandler.sync(this);
40878 			_la = _input.LA(1);
40879 			if (_la==LP_) {
40880 				{
40881 				setState(5646);
40882 				columnNames();
40883 				}
40884 			}
40885 
40886 			setState(5656);
40887 			_errHandler.sync(this);
40888 			_la = _input.LA(1);
40889 			while (_la==COMMA_) {
40890 				{
40891 				{
40892 				setState(5649);
40893 				match(COMMA_);
40894 				setState(5650);
40895 				privilegeType();
40896 				setState(5652);
40897 				_errHandler.sync(this);
40898 				_la = _input.LA(1);
40899 				if (_la==LP_) {
40900 					{
40901 					setState(5651);
40902 					columnNames();
40903 					}
40904 				}
40905 
40906 				}
40907 				}
40908 				setState(5658);
40909 				_errHandler.sync(this);
40910 				_la = _input.LA(1);
40911 			}
40912 			}
40913 		}
40914 		catch (RecognitionException re) {
40915 			_localctx.exception = re;
40916 			_errHandler.reportError(this, re);
40917 			_errHandler.recover(this, re);
40918 		}
40919 		finally {
40920 			exitRule();
40921 		}
40922 		return _localctx;
40923 	}
40924 
40925 	public static class OnClassClauseContext extends ParserRuleContext {
40926 		public SecurableContext securable() {
40927 			return getRuleContext(SecurableContext.class,0);
40928 		}
40929 		public ClassItemContext classItem() {
40930 			return getRuleContext(ClassItemContext.class,0);
40931 		}
40932 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
40933 		public TerminalNode COLON_(int i) {
40934 			return getToken(SQLServerStatementParser.COLON_, i);
40935 		}
40936 		public OnClassClauseContext(ParserRuleContext parent, int invokingState) {
40937 			super(parent, invokingState);
40938 		}
40939 		@Override public int getRuleIndex() { return RULE_onClassClause; }
40940 		@Override
40941 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40942 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassClause(this);
40943 			else return visitor.visitChildren(this);
40944 		}
40945 	}
40946 
40947 	public final OnClassClauseContext onClassClause() throws RecognitionException {
40948 		OnClassClauseContext _localctx = new OnClassClauseContext(_ctx, getState());
40949 		enterRule(_localctx, 788, RULE_onClassClause);
40950 		try {
40951 			enterOuterAlt(_localctx, 1);
40952 			{
40953 			setState(5663);
40954 			_errHandler.sync(this);
40955 			switch ( getInterpreter().adaptivePredict(_input,663,_ctx) ) {
40956 			case 1:
40957 				{
40958 				setState(5659);
40959 				classItem();
40960 				setState(5660);
40961 				match(COLON_);
40962 				setState(5661);
40963 				match(COLON_);
40964 				}
40965 				break;
40966 			}
40967 			setState(5665);
40968 			securable();
40969 			}
40970 		}
40971 		catch (RecognitionException re) {
40972 			_localctx.exception = re;
40973 			_errHandler.reportError(this, re);
40974 			_errHandler.recover(this, re);
40975 		}
40976 		finally {
40977 			exitRule();
40978 		}
40979 		return _localctx;
40980 	}
40981 
40982 	public static class ClassTypePrivilegesContext extends ParserRuleContext {
40983 		public List<PrivilegeTypeContext> privilegeType() {
40984 			return getRuleContexts(PrivilegeTypeContext.class);
40985 		}
40986 		public PrivilegeTypeContext privilegeType(int i) {
40987 			return getRuleContext(PrivilegeTypeContext.class,i);
40988 		}
40989 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40990 		public TerminalNode COMMA_(int i) {
40991 			return getToken(SQLServerStatementParser.COMMA_, i);
40992 		}
40993 		public ClassTypePrivilegesContext(ParserRuleContext parent, int invokingState) {
40994 			super(parent, invokingState);
40995 		}
40996 		@Override public int getRuleIndex() { return RULE_classTypePrivileges; }
40997 		@Override
40998 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40999 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassTypePrivileges(this);
41000 			else return visitor.visitChildren(this);
41001 		}
41002 	}
41003 
41004 	public final ClassTypePrivilegesContext classTypePrivileges() throws RecognitionException {
41005 		ClassTypePrivilegesContext _localctx = new ClassTypePrivilegesContext(_ctx, getState());
41006 		enterRule(_localctx, 790, RULE_classTypePrivileges);
41007 		int _la;
41008 		try {
41009 			enterOuterAlt(_localctx, 1);
41010 			{
41011 			setState(5667);
41012 			privilegeType();
41013 			setState(5672);
41014 			_errHandler.sync(this);
41015 			_la = _input.LA(1);
41016 			while (_la==COMMA_) {
41017 				{
41018 				{
41019 				setState(5668);
41020 				match(COMMA_);
41021 				setState(5669);
41022 				privilegeType();
41023 				}
41024 				}
41025 				setState(5674);
41026 				_errHandler.sync(this);
41027 				_la = _input.LA(1);
41028 			}
41029 			}
41030 		}
41031 		catch (RecognitionException re) {
41032 			_localctx.exception = re;
41033 			_errHandler.reportError(this, re);
41034 			_errHandler.recover(this, re);
41035 		}
41036 		finally {
41037 			exitRule();
41038 		}
41039 		return _localctx;
41040 	}
41041 
41042 	public static class OnClassTypeClauseContext extends ParserRuleContext {
41043 		public SecurableContext securable() {
41044 			return getRuleContext(SecurableContext.class,0);
41045 		}
41046 		public ClassTypeContext classType() {
41047 			return getRuleContext(ClassTypeContext.class,0);
41048 		}
41049 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
41050 		public TerminalNode COLON_(int i) {
41051 			return getToken(SQLServerStatementParser.COLON_, i);
41052 		}
41053 		public OnClassTypeClauseContext(ParserRuleContext parent, int invokingState) {
41054 			super(parent, invokingState);
41055 		}
41056 		@Override public int getRuleIndex() { return RULE_onClassTypeClause; }
41057 		@Override
41058 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41059 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassTypeClause(this);
41060 			else return visitor.visitChildren(this);
41061 		}
41062 	}
41063 
41064 	public final OnClassTypeClauseContext onClassTypeClause() throws RecognitionException {
41065 		OnClassTypeClauseContext _localctx = new OnClassTypeClauseContext(_ctx, getState());
41066 		enterRule(_localctx, 792, RULE_onClassTypeClause);
41067 		try {
41068 			enterOuterAlt(_localctx, 1);
41069 			{
41070 			setState(5679);
41071 			_errHandler.sync(this);
41072 			switch ( getInterpreter().adaptivePredict(_input,665,_ctx) ) {
41073 			case 1:
41074 				{
41075 				setState(5675);
41076 				classType();
41077 				setState(5676);
41078 				match(COLON_);
41079 				setState(5677);
41080 				match(COLON_);
41081 				}
41082 				break;
41083 			}
41084 			setState(5681);
41085 			securable();
41086 			}
41087 		}
41088 		catch (RecognitionException re) {
41089 			_localctx.exception = re;
41090 			_errHandler.reportError(this, re);
41091 			_errHandler.recover(this, re);
41092 		}
41093 		finally {
41094 			exitRule();
41095 		}
41096 		return _localctx;
41097 	}
41098 
41099 	public static class SecurableContext extends ParserRuleContext {
41100 		public NameContext name() {
41101 			return getRuleContext(NameContext.class,0);
41102 		}
41103 		public OwnerContext owner() {
41104 			return getRuleContext(OwnerContext.class,0);
41105 		}
41106 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
41107 		public SecurableContext(ParserRuleContext parent, int invokingState) {
41108 			super(parent, invokingState);
41109 		}
41110 		@Override public int getRuleIndex() { return RULE_securable; }
41111 		@Override
41112 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41113 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSecurable(this);
41114 			else return visitor.visitChildren(this);
41115 		}
41116 	}
41117 
41118 	public final SecurableContext securable() throws RecognitionException {
41119 		SecurableContext _localctx = new SecurableContext(_ctx, getState());
41120 		enterRule(_localctx, 794, RULE_securable);
41121 		try {
41122 			enterOuterAlt(_localctx, 1);
41123 			{
41124 			setState(5686);
41125 			_errHandler.sync(this);
41126 			switch ( getInterpreter().adaptivePredict(_input,666,_ctx) ) {
41127 			case 1:
41128 				{
41129 				setState(5683);
41130 				owner();
41131 				setState(5684);
41132 				match(DOT_);
41133 				}
41134 				break;
41135 			}
41136 			setState(5688);
41137 			name();
41138 			}
41139 		}
41140 		catch (RecognitionException re) {
41141 			_localctx.exception = re;
41142 			_errHandler.reportError(this, re);
41143 			_errHandler.recover(this, re);
41144 		}
41145 		finally {
41146 			exitRule();
41147 		}
41148 		return _localctx;
41149 	}
41150 
41151 	public static class PrincipalContext extends ParserRuleContext {
41152 		public UserNameContext userName() {
41153 			return getRuleContext(UserNameContext.class,0);
41154 		}
41155 		public PrincipalContext(ParserRuleContext parent, int invokingState) {
41156 			super(parent, invokingState);
41157 		}
41158 		@Override public int getRuleIndex() { return RULE_principal; }
41159 		@Override
41160 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41161 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrincipal(this);
41162 			else return visitor.visitChildren(this);
41163 		}
41164 	}
41165 
41166 	public final PrincipalContext principal() throws RecognitionException {
41167 		PrincipalContext _localctx = new PrincipalContext(_ctx, getState());
41168 		enterRule(_localctx, 796, RULE_principal);
41169 		try {
41170 			enterOuterAlt(_localctx, 1);
41171 			{
41172 			setState(5690);
41173 			userName();
41174 			}
41175 		}
41176 		catch (RecognitionException re) {
41177 			_localctx.exception = re;
41178 			_errHandler.reportError(this, re);
41179 			_errHandler.recover(this, re);
41180 		}
41181 		finally {
41182 			exitRule();
41183 		}
41184 		return _localctx;
41185 	}
41186 
41187 	public static class RevokeContext extends ParserRuleContext {
41188 		public TerminalNode REVOKE() { return getToken(SQLServerStatementParser.REVOKE, 0); }
41189 		public RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() {
41190 			return getRuleContext(RevokeClassPrivilegesClauseContext.class,0);
41191 		}
41192 		public RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() {
41193 			return getRuleContext(RevokeClassTypePrivilegesClauseContext.class,0);
41194 		}
41195 		public OptionForClauseContext optionForClause() {
41196 			return getRuleContext(OptionForClauseContext.class,0);
41197 		}
41198 		public RevokeContext(ParserRuleContext parent, int invokingState) {
41199 			super(parent, invokingState);
41200 		}
41201 		@Override public int getRuleIndex() { return RULE_revoke; }
41202 		@Override
41203 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41204 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevoke(this);
41205 			else return visitor.visitChildren(this);
41206 		}
41207 	}
41208 
41209 	public final RevokeContext revoke() throws RecognitionException {
41210 		RevokeContext _localctx = new RevokeContext(_ctx, getState());
41211 		enterRule(_localctx, 798, RULE_revoke);
41212 		int _la;
41213 		try {
41214 			enterOuterAlt(_localctx, 1);
41215 			{
41216 			setState(5692);
41217 			match(REVOKE);
41218 			setState(5698);
41219 			_errHandler.sync(this);
41220 			switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) {
41221 			case 1:
41222 				{
41223 				setState(5694);
41224 				_errHandler.sync(this);
41225 				_la = _input.LA(1);
41226 				if (_la==GRANT) {
41227 					{
41228 					setState(5693);
41229 					optionForClause();
41230 					}
41231 				}
41232 
41233 				setState(5696);
41234 				revokeClassPrivilegesClause();
41235 				}
41236 				break;
41237 			case 2:
41238 				{
41239 				setState(5697);
41240 				revokeClassTypePrivilegesClause();
41241 				}
41242 				break;
41243 			}
41244 			}
41245 		}
41246 		catch (RecognitionException re) {
41247 			_localctx.exception = re;
41248 			_errHandler.reportError(this, re);
41249 			_errHandler.recover(this, re);
41250 		}
41251 		finally {
41252 			exitRule();
41253 		}
41254 		return _localctx;
41255 	}
41256 
41257 	public static class RevokeClassPrivilegesClauseContext extends ParserRuleContext {
41258 		public ClassPrivilegesContext classPrivileges() {
41259 			return getRuleContext(ClassPrivilegesContext.class,0);
41260 		}
41261 		public List<PrincipalContext> principal() {
41262 			return getRuleContexts(PrincipalContext.class);
41263 		}
41264 		public PrincipalContext principal(int i) {
41265 			return getRuleContext(PrincipalContext.class,i);
41266 		}
41267 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41268 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
41269 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41270 		public OnClassClauseContext onClassClause() {
41271 			return getRuleContext(OnClassClauseContext.class,0);
41272 		}
41273 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41274 		public TerminalNode COMMA_(int i) {
41275 			return getToken(SQLServerStatementParser.COMMA_, i);
41276 		}
41277 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
41278 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
41279 		public RevokeClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41280 			super(parent, invokingState);
41281 		}
41282 		@Override public int getRuleIndex() { return RULE_revokeClassPrivilegesClause; }
41283 		@Override
41284 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41285 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassPrivilegesClause(this);
41286 			else return visitor.visitChildren(this);
41287 		}
41288 	}
41289 
41290 	public final RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() throws RecognitionException {
41291 		RevokeClassPrivilegesClauseContext _localctx = new RevokeClassPrivilegesClauseContext(_ctx, getState());
41292 		enterRule(_localctx, 800, RULE_revokeClassPrivilegesClause);
41293 		int _la;
41294 		try {
41295 			enterOuterAlt(_localctx, 1);
41296 			{
41297 			setState(5700);
41298 			classPrivileges();
41299 			setState(5703);
41300 			_errHandler.sync(this);
41301 			_la = _input.LA(1);
41302 			if (_la==ON) {
41303 				{
41304 				setState(5701);
41305 				match(ON);
41306 				setState(5702);
41307 				onClassClause();
41308 				}
41309 			}
41310 
41311 			setState(5705);
41312 			_la = _input.LA(1);
41313 			if ( !(_la==FROM || _la==TO) ) {
41314 			_errHandler.recoverInline(this);
41315 			}
41316 			else {
41317 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41318 				_errHandler.reportMatch(this);
41319 				consume();
41320 			}
41321 			setState(5706);
41322 			principal();
41323 			setState(5711);
41324 			_errHandler.sync(this);
41325 			_la = _input.LA(1);
41326 			while (_la==COMMA_) {
41327 				{
41328 				{
41329 				setState(5707);
41330 				match(COMMA_);
41331 				setState(5708);
41332 				principal();
41333 				}
41334 				}
41335 				setState(5713);
41336 				_errHandler.sync(this);
41337 				_la = _input.LA(1);
41338 			}
41339 			setState(5715);
41340 			_errHandler.sync(this);
41341 			_la = _input.LA(1);
41342 			if (_la==CASCADE) {
41343 				{
41344 				setState(5714);
41345 				match(CASCADE);
41346 				}
41347 			}
41348 
41349 			setState(5719);
41350 			_errHandler.sync(this);
41351 			_la = _input.LA(1);
41352 			if (_la==AS) {
41353 				{
41354 				setState(5717);
41355 				match(AS);
41356 				setState(5718);
41357 				principal();
41358 				}
41359 			}
41360 
41361 			}
41362 		}
41363 		catch (RecognitionException re) {
41364 			_localctx.exception = re;
41365 			_errHandler.reportError(this, re);
41366 			_errHandler.recover(this, re);
41367 		}
41368 		finally {
41369 			exitRule();
41370 		}
41371 		return _localctx;
41372 	}
41373 
41374 	public static class RevokeClassTypePrivilegesClauseContext extends ParserRuleContext {
41375 		public ClassTypePrivilegesContext classTypePrivileges() {
41376 			return getRuleContext(ClassTypePrivilegesContext.class,0);
41377 		}
41378 		public List<PrincipalContext> principal() {
41379 			return getRuleContexts(PrincipalContext.class);
41380 		}
41381 		public PrincipalContext principal(int i) {
41382 			return getRuleContext(PrincipalContext.class,i);
41383 		}
41384 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41385 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
41386 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41387 		public OnClassTypeClauseContext onClassTypeClause() {
41388 			return getRuleContext(OnClassTypeClauseContext.class,0);
41389 		}
41390 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41391 		public TerminalNode COMMA_(int i) {
41392 			return getToken(SQLServerStatementParser.COMMA_, i);
41393 		}
41394 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
41395 		public RevokeClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41396 			super(parent, invokingState);
41397 		}
41398 		@Override public int getRuleIndex() { return RULE_revokeClassTypePrivilegesClause; }
41399 		@Override
41400 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41401 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassTypePrivilegesClause(this);
41402 			else return visitor.visitChildren(this);
41403 		}
41404 	}
41405 
41406 	public final RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() throws RecognitionException {
41407 		RevokeClassTypePrivilegesClauseContext _localctx = new RevokeClassTypePrivilegesClauseContext(_ctx, getState());
41408 		enterRule(_localctx, 802, RULE_revokeClassTypePrivilegesClause);
41409 		int _la;
41410 		try {
41411 			enterOuterAlt(_localctx, 1);
41412 			{
41413 			setState(5721);
41414 			classTypePrivileges();
41415 			setState(5724);
41416 			_errHandler.sync(this);
41417 			_la = _input.LA(1);
41418 			if (_la==ON) {
41419 				{
41420 				setState(5722);
41421 				match(ON);
41422 				setState(5723);
41423 				onClassTypeClause();
41424 				}
41425 			}
41426 
41427 			setState(5726);
41428 			_la = _input.LA(1);
41429 			if ( !(_la==FROM || _la==TO) ) {
41430 			_errHandler.recoverInline(this);
41431 			}
41432 			else {
41433 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41434 				_errHandler.reportMatch(this);
41435 				consume();
41436 			}
41437 			setState(5727);
41438 			principal();
41439 			setState(5732);
41440 			_errHandler.sync(this);
41441 			_la = _input.LA(1);
41442 			while (_la==COMMA_) {
41443 				{
41444 				{
41445 				setState(5728);
41446 				match(COMMA_);
41447 				setState(5729);
41448 				principal();
41449 				}
41450 				}
41451 				setState(5734);
41452 				_errHandler.sync(this);
41453 				_la = _input.LA(1);
41454 			}
41455 			setState(5736);
41456 			_errHandler.sync(this);
41457 			_la = _input.LA(1);
41458 			if (_la==CASCADE) {
41459 				{
41460 				setState(5735);
41461 				match(CASCADE);
41462 				}
41463 			}
41464 
41465 			}
41466 		}
41467 		catch (RecognitionException re) {
41468 			_localctx.exception = re;
41469 			_errHandler.reportError(this, re);
41470 			_errHandler.recover(this, re);
41471 		}
41472 		finally {
41473 			exitRule();
41474 		}
41475 		return _localctx;
41476 	}
41477 
41478 	public static class DenyContext extends ParserRuleContext {
41479 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
41480 		public DenyClassPrivilegesClauseContext denyClassPrivilegesClause() {
41481 			return getRuleContext(DenyClassPrivilegesClauseContext.class,0);
41482 		}
41483 		public DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() {
41484 			return getRuleContext(DenyClassTypePrivilegesClauseContext.class,0);
41485 		}
41486 		public DenyContext(ParserRuleContext parent, int invokingState) {
41487 			super(parent, invokingState);
41488 		}
41489 		@Override public int getRuleIndex() { return RULE_deny; }
41490 		@Override
41491 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41492 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeny(this);
41493 			else return visitor.visitChildren(this);
41494 		}
41495 	}
41496 
41497 	public final DenyContext deny() throws RecognitionException {
41498 		DenyContext _localctx = new DenyContext(_ctx, getState());
41499 		enterRule(_localctx, 804, RULE_deny);
41500 		try {
41501 			enterOuterAlt(_localctx, 1);
41502 			{
41503 			setState(5738);
41504 			match(DENY);
41505 			setState(5741);
41506 			_errHandler.sync(this);
41507 			switch ( getInterpreter().adaptivePredict(_input,676,_ctx) ) {
41508 			case 1:
41509 				{
41510 				setState(5739);
41511 				denyClassPrivilegesClause();
41512 				}
41513 				break;
41514 			case 2:
41515 				{
41516 				setState(5740);
41517 				denyClassTypePrivilegesClause();
41518 				}
41519 				break;
41520 			}
41521 			}
41522 		}
41523 		catch (RecognitionException re) {
41524 			_localctx.exception = re;
41525 			_errHandler.reportError(this, re);
41526 			_errHandler.recover(this, re);
41527 		}
41528 		finally {
41529 			exitRule();
41530 		}
41531 		return _localctx;
41532 	}
41533 
41534 	public static class DenyClassPrivilegesClauseContext extends ParserRuleContext {
41535 		public ClassPrivilegesContext classPrivileges() {
41536 			return getRuleContext(ClassPrivilegesContext.class,0);
41537 		}
41538 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41539 		public List<PrincipalContext> principal() {
41540 			return getRuleContexts(PrincipalContext.class);
41541 		}
41542 		public PrincipalContext principal(int i) {
41543 			return getRuleContext(PrincipalContext.class,i);
41544 		}
41545 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41546 		public OnClassClauseContext onClassClause() {
41547 			return getRuleContext(OnClassClauseContext.class,0);
41548 		}
41549 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41550 		public TerminalNode COMMA_(int i) {
41551 			return getToken(SQLServerStatementParser.COMMA_, i);
41552 		}
41553 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
41554 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
41555 		public DenyClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41556 			super(parent, invokingState);
41557 		}
41558 		@Override public int getRuleIndex() { return RULE_denyClassPrivilegesClause; }
41559 		@Override
41560 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41561 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassPrivilegesClause(this);
41562 			else return visitor.visitChildren(this);
41563 		}
41564 	}
41565 
41566 	public final DenyClassPrivilegesClauseContext denyClassPrivilegesClause() throws RecognitionException {
41567 		DenyClassPrivilegesClauseContext _localctx = new DenyClassPrivilegesClauseContext(_ctx, getState());
41568 		enterRule(_localctx, 806, RULE_denyClassPrivilegesClause);
41569 		int _la;
41570 		try {
41571 			enterOuterAlt(_localctx, 1);
41572 			{
41573 			setState(5743);
41574 			classPrivileges();
41575 			setState(5746);
41576 			_errHandler.sync(this);
41577 			_la = _input.LA(1);
41578 			if (_la==ON) {
41579 				{
41580 				setState(5744);
41581 				match(ON);
41582 				setState(5745);
41583 				onClassClause();
41584 				}
41585 			}
41586 
41587 			setState(5748);
41588 			match(TO);
41589 			setState(5749);
41590 			principal();
41591 			setState(5754);
41592 			_errHandler.sync(this);
41593 			_la = _input.LA(1);
41594 			while (_la==COMMA_) {
41595 				{
41596 				{
41597 				setState(5750);
41598 				match(COMMA_);
41599 				setState(5751);
41600 				principal();
41601 				}
41602 				}
41603 				setState(5756);
41604 				_errHandler.sync(this);
41605 				_la = _input.LA(1);
41606 			}
41607 			setState(5758);
41608 			_errHandler.sync(this);
41609 			_la = _input.LA(1);
41610 			if (_la==CASCADE) {
41611 				{
41612 				setState(5757);
41613 				match(CASCADE);
41614 				}
41615 			}
41616 
41617 			setState(5762);
41618 			_errHandler.sync(this);
41619 			_la = _input.LA(1);
41620 			if (_la==AS) {
41621 				{
41622 				setState(5760);
41623 				match(AS);
41624 				setState(5761);
41625 				principal();
41626 				}
41627 			}
41628 
41629 			}
41630 		}
41631 		catch (RecognitionException re) {
41632 			_localctx.exception = re;
41633 			_errHandler.reportError(this, re);
41634 			_errHandler.recover(this, re);
41635 		}
41636 		finally {
41637 			exitRule();
41638 		}
41639 		return _localctx;
41640 	}
41641 
41642 	public static class DenyClassTypePrivilegesClauseContext extends ParserRuleContext {
41643 		public ClassTypePrivilegesContext classTypePrivileges() {
41644 			return getRuleContext(ClassTypePrivilegesContext.class,0);
41645 		}
41646 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41647 		public List<PrincipalContext> principal() {
41648 			return getRuleContexts(PrincipalContext.class);
41649 		}
41650 		public PrincipalContext principal(int i) {
41651 			return getRuleContext(PrincipalContext.class,i);
41652 		}
41653 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41654 		public OnClassTypeClauseContext onClassTypeClause() {
41655 			return getRuleContext(OnClassTypeClauseContext.class,0);
41656 		}
41657 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41658 		public TerminalNode COMMA_(int i) {
41659 			return getToken(SQLServerStatementParser.COMMA_, i);
41660 		}
41661 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
41662 		public DenyClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41663 			super(parent, invokingState);
41664 		}
41665 		@Override public int getRuleIndex() { return RULE_denyClassTypePrivilegesClause; }
41666 		@Override
41667 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41668 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassTypePrivilegesClause(this);
41669 			else return visitor.visitChildren(this);
41670 		}
41671 	}
41672 
41673 	public final DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() throws RecognitionException {
41674 		DenyClassTypePrivilegesClauseContext _localctx = new DenyClassTypePrivilegesClauseContext(_ctx, getState());
41675 		enterRule(_localctx, 808, RULE_denyClassTypePrivilegesClause);
41676 		int _la;
41677 		try {
41678 			enterOuterAlt(_localctx, 1);
41679 			{
41680 			setState(5764);
41681 			classTypePrivileges();
41682 			setState(5767);
41683 			_errHandler.sync(this);
41684 			_la = _input.LA(1);
41685 			if (_la==ON) {
41686 				{
41687 				setState(5765);
41688 				match(ON);
41689 				setState(5766);
41690 				onClassTypeClause();
41691 				}
41692 			}
41693 
41694 			setState(5769);
41695 			match(TO);
41696 			setState(5770);
41697 			principal();
41698 			setState(5775);
41699 			_errHandler.sync(this);
41700 			_la = _input.LA(1);
41701 			while (_la==COMMA_) {
41702 				{
41703 				{
41704 				setState(5771);
41705 				match(COMMA_);
41706 				setState(5772);
41707 				principal();
41708 				}
41709 				}
41710 				setState(5777);
41711 				_errHandler.sync(this);
41712 				_la = _input.LA(1);
41713 			}
41714 			setState(5779);
41715 			_errHandler.sync(this);
41716 			_la = _input.LA(1);
41717 			if (_la==CASCADE) {
41718 				{
41719 				setState(5778);
41720 				match(CASCADE);
41721 				}
41722 			}
41723 
41724 			}
41725 		}
41726 		catch (RecognitionException re) {
41727 			_localctx.exception = re;
41728 			_errHandler.reportError(this, re);
41729 			_errHandler.recover(this, re);
41730 		}
41731 		finally {
41732 			exitRule();
41733 		}
41734 		return _localctx;
41735 	}
41736 
41737 	public static class OptionForClauseContext extends ParserRuleContext {
41738 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
41739 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
41740 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
41741 		public OptionForClauseContext(ParserRuleContext parent, int invokingState) {
41742 			super(parent, invokingState);
41743 		}
41744 		@Override public int getRuleIndex() { return RULE_optionForClause; }
41745 		@Override
41746 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41747 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionForClause(this);
41748 			else return visitor.visitChildren(this);
41749 		}
41750 	}
41751 
41752 	public final OptionForClauseContext optionForClause() throws RecognitionException {
41753 		OptionForClauseContext _localctx = new OptionForClauseContext(_ctx, getState());
41754 		enterRule(_localctx, 810, RULE_optionForClause);
41755 		try {
41756 			enterOuterAlt(_localctx, 1);
41757 			{
41758 			setState(5781);
41759 			match(GRANT);
41760 			setState(5782);
41761 			match(OPTION);
41762 			setState(5783);
41763 			match(FOR);
41764 			}
41765 		}
41766 		catch (RecognitionException re) {
41767 			_localctx.exception = re;
41768 			_errHandler.reportError(this, re);
41769 			_errHandler.recover(this, re);
41770 		}
41771 		finally {
41772 			exitRule();
41773 		}
41774 		return _localctx;
41775 	}
41776 
41777 	public static class PrivilegeTypeContext extends ParserRuleContext {
41778 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
41779 		public TerminalNode PRIVILEGES() { return getToken(SQLServerStatementParser.PRIVILEGES, 0); }
41780 		public AssemblyPermissionContext assemblyPermission() {
41781 			return getRuleContext(AssemblyPermissionContext.class,0);
41782 		}
41783 		public AsymmetricKeyPermissionContext asymmetricKeyPermission() {
41784 			return getRuleContext(AsymmetricKeyPermissionContext.class,0);
41785 		}
41786 		public AvailabilityGroupPermissionContext availabilityGroupPermission() {
41787 			return getRuleContext(AvailabilityGroupPermissionContext.class,0);
41788 		}
41789 		public CertificatePermissionContext certificatePermission() {
41790 			return getRuleContext(CertificatePermissionContext.class,0);
41791 		}
41792 		public ObjectPermissionContext objectPermission() {
41793 			return getRuleContext(ObjectPermissionContext.class,0);
41794 		}
41795 		public SystemObjectPermissionContext systemObjectPermission() {
41796 			return getRuleContext(SystemObjectPermissionContext.class,0);
41797 		}
41798 		public DatabasePermissionContext databasePermission() {
41799 			return getRuleContext(DatabasePermissionContext.class,0);
41800 		}
41801 		public DatabasePrincipalPermissionContext databasePrincipalPermission() {
41802 			return getRuleContext(DatabasePrincipalPermissionContext.class,0);
41803 		}
41804 		public DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() {
41805 			return getRuleContext(DatabaseScopedCredentialPermissionContext.class,0);
41806 		}
41807 		public EndpointPermissionContext endpointPermission() {
41808 			return getRuleContext(EndpointPermissionContext.class,0);
41809 		}
41810 		public FullTextPermissionContext fullTextPermission() {
41811 			return getRuleContext(FullTextPermissionContext.class,0);
41812 		}
41813 		public SchemaPermissionContext schemaPermission() {
41814 			return getRuleContext(SchemaPermissionContext.class,0);
41815 		}
41816 		public SearchPropertyListPermissionContext searchPropertyListPermission() {
41817 			return getRuleContext(SearchPropertyListPermissionContext.class,0);
41818 		}
41819 		public ServerPermissionContext serverPermission() {
41820 			return getRuleContext(ServerPermissionContext.class,0);
41821 		}
41822 		public ServerPrincipalPermissionContext serverPrincipalPermission() {
41823 			return getRuleContext(ServerPrincipalPermissionContext.class,0);
41824 		}
41825 		public ServiceBrokerPermissionContext serviceBrokerPermission() {
41826 			return getRuleContext(ServiceBrokerPermissionContext.class,0);
41827 		}
41828 		public SymmetricKeyPermissionContext symmetricKeyPermission() {
41829 			return getRuleContext(SymmetricKeyPermissionContext.class,0);
41830 		}
41831 		public TypePermissionContext typePermission() {
41832 			return getRuleContext(TypePermissionContext.class,0);
41833 		}
41834 		public XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() {
41835 			return getRuleContext(XmlSchemaCollectionPermissionContext.class,0);
41836 		}
41837 		public PrivilegeTypeContext(ParserRuleContext parent, int invokingState) {
41838 			super(parent, invokingState);
41839 		}
41840 		@Override public int getRuleIndex() { return RULE_privilegeType; }
41841 		@Override
41842 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41843 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivilegeType(this);
41844 			else return visitor.visitChildren(this);
41845 		}
41846 	}
41847 
41848 	public final PrivilegeTypeContext privilegeType() throws RecognitionException {
41849 		PrivilegeTypeContext _localctx = new PrivilegeTypeContext(_ctx, getState());
41850 		enterRule(_localctx, 812, RULE_privilegeType);
41851 		int _la;
41852 		try {
41853 			setState(5808);
41854 			_errHandler.sync(this);
41855 			switch ( getInterpreter().adaptivePredict(_input,685,_ctx) ) {
41856 			case 1:
41857 				enterOuterAlt(_localctx, 1);
41858 				{
41859 				setState(5785);
41860 				match(ALL);
41861 				setState(5787);
41862 				_errHandler.sync(this);
41863 				_la = _input.LA(1);
41864 				if (_la==PRIVILEGES) {
41865 					{
41866 					setState(5786);
41867 					match(PRIVILEGES);
41868 					}
41869 				}
41870 
41871 				}
41872 				break;
41873 			case 2:
41874 				enterOuterAlt(_localctx, 2);
41875 				{
41876 				setState(5789);
41877 				assemblyPermission();
41878 				}
41879 				break;
41880 			case 3:
41881 				enterOuterAlt(_localctx, 3);
41882 				{
41883 				setState(5790);
41884 				asymmetricKeyPermission();
41885 				}
41886 				break;
41887 			case 4:
41888 				enterOuterAlt(_localctx, 4);
41889 				{
41890 				setState(5791);
41891 				availabilityGroupPermission();
41892 				}
41893 				break;
41894 			case 5:
41895 				enterOuterAlt(_localctx, 5);
41896 				{
41897 				setState(5792);
41898 				certificatePermission();
41899 				}
41900 				break;
41901 			case 6:
41902 				enterOuterAlt(_localctx, 6);
41903 				{
41904 				setState(5793);
41905 				objectPermission();
41906 				}
41907 				break;
41908 			case 7:
41909 				enterOuterAlt(_localctx, 7);
41910 				{
41911 				setState(5794);
41912 				systemObjectPermission();
41913 				}
41914 				break;
41915 			case 8:
41916 				enterOuterAlt(_localctx, 8);
41917 				{
41918 				setState(5795);
41919 				databasePermission();
41920 				}
41921 				break;
41922 			case 9:
41923 				enterOuterAlt(_localctx, 9);
41924 				{
41925 				setState(5796);
41926 				databasePrincipalPermission();
41927 				}
41928 				break;
41929 			case 10:
41930 				enterOuterAlt(_localctx, 10);
41931 				{
41932 				setState(5797);
41933 				databaseScopedCredentialPermission();
41934 				}
41935 				break;
41936 			case 11:
41937 				enterOuterAlt(_localctx, 11);
41938 				{
41939 				setState(5798);
41940 				endpointPermission();
41941 				}
41942 				break;
41943 			case 12:
41944 				enterOuterAlt(_localctx, 12);
41945 				{
41946 				setState(5799);
41947 				fullTextPermission();
41948 				}
41949 				break;
41950 			case 13:
41951 				enterOuterAlt(_localctx, 13);
41952 				{
41953 				setState(5800);
41954 				schemaPermission();
41955 				}
41956 				break;
41957 			case 14:
41958 				enterOuterAlt(_localctx, 14);
41959 				{
41960 				setState(5801);
41961 				searchPropertyListPermission();
41962 				}
41963 				break;
41964 			case 15:
41965 				enterOuterAlt(_localctx, 15);
41966 				{
41967 				setState(5802);
41968 				serverPermission();
41969 				}
41970 				break;
41971 			case 16:
41972 				enterOuterAlt(_localctx, 16);
41973 				{
41974 				setState(5803);
41975 				serverPrincipalPermission();
41976 				}
41977 				break;
41978 			case 17:
41979 				enterOuterAlt(_localctx, 17);
41980 				{
41981 				setState(5804);
41982 				serviceBrokerPermission();
41983 				}
41984 				break;
41985 			case 18:
41986 				enterOuterAlt(_localctx, 18);
41987 				{
41988 				setState(5805);
41989 				symmetricKeyPermission();
41990 				}
41991 				break;
41992 			case 19:
41993 				enterOuterAlt(_localctx, 19);
41994 				{
41995 				setState(5806);
41996 				typePermission();
41997 				}
41998 				break;
41999 			case 20:
42000 				enterOuterAlt(_localctx, 20);
42001 				{
42002 				setState(5807);
42003 				xmlSchemaCollectionPermission();
42004 				}
42005 				break;
42006 			}
42007 		}
42008 		catch (RecognitionException re) {
42009 			_localctx.exception = re;
42010 			_errHandler.reportError(this, re);
42011 			_errHandler.recover(this, re);
42012 		}
42013 		finally {
42014 			exitRule();
42015 		}
42016 		return _localctx;
42017 	}
42018 
42019 	public static class ObjectPermissionContext extends ParserRuleContext {
42020 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42021 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42022 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
42023 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
42024 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
42025 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
42026 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
42027 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
42028 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
42029 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
42030 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
42031 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42032 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
42033 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
42034 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42035 		public ObjectPermissionContext(ParserRuleContext parent, int invokingState) {
42036 			super(parent, invokingState);
42037 		}
42038 		@Override public int getRuleIndex() { return RULE_objectPermission; }
42039 		@Override
42040 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42041 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitObjectPermission(this);
42042 			else return visitor.visitChildren(this);
42043 		}
42044 	}
42045 
42046 	public final ObjectPermissionContext objectPermission() throws RecognitionException {
42047 		ObjectPermissionContext _localctx = new ObjectPermissionContext(_ctx, getState());
42048 		enterRule(_localctx, 814, RULE_objectPermission);
42049 		try {
42050 			setState(5826);
42051 			_errHandler.sync(this);
42052 			switch ( getInterpreter().adaptivePredict(_input,686,_ctx) ) {
42053 			case 1:
42054 				enterOuterAlt(_localctx, 1);
42055 				{
42056 				setState(5810);
42057 				match(ALTER);
42058 				}
42059 				break;
42060 			case 2:
42061 				enterOuterAlt(_localctx, 2);
42062 				{
42063 				setState(5811);
42064 				match(CONTROL);
42065 				}
42066 				break;
42067 			case 3:
42068 				enterOuterAlt(_localctx, 3);
42069 				{
42070 				setState(5812);
42071 				match(DELETE);
42072 				}
42073 				break;
42074 			case 4:
42075 				enterOuterAlt(_localctx, 4);
42076 				{
42077 				setState(5813);
42078 				match(EXECUTE);
42079 				}
42080 				break;
42081 			case 5:
42082 				enterOuterAlt(_localctx, 5);
42083 				{
42084 				setState(5814);
42085 				match(INSERT);
42086 				}
42087 				break;
42088 			case 6:
42089 				enterOuterAlt(_localctx, 6);
42090 				{
42091 				setState(5815);
42092 				match(RECEIVE);
42093 				}
42094 				break;
42095 			case 7:
42096 				enterOuterAlt(_localctx, 7);
42097 				{
42098 				setState(5816);
42099 				match(REFERENCES);
42100 				}
42101 				break;
42102 			case 8:
42103 				enterOuterAlt(_localctx, 8);
42104 				{
42105 				setState(5817);
42106 				match(SELECT);
42107 				}
42108 				break;
42109 			case 9:
42110 				enterOuterAlt(_localctx, 9);
42111 				{
42112 				setState(5818);
42113 				match(TAKE);
42114 				setState(5819);
42115 				match(OWNERSHIP);
42116 				}
42117 				break;
42118 			case 10:
42119 				enterOuterAlt(_localctx, 10);
42120 				{
42121 				setState(5820);
42122 				match(UPDATE);
42123 				}
42124 				break;
42125 			case 11:
42126 				enterOuterAlt(_localctx, 11);
42127 				{
42128 				setState(5821);
42129 				match(VIEW);
42130 				setState(5822);
42131 				match(CHANGE);
42132 				setState(5823);
42133 				match(TRACKING);
42134 				}
42135 				break;
42136 			case 12:
42137 				enterOuterAlt(_localctx, 12);
42138 				{
42139 				setState(5824);
42140 				match(VIEW);
42141 				setState(5825);
42142 				match(DEFINITION);
42143 				}
42144 				break;
42145 			}
42146 		}
42147 		catch (RecognitionException re) {
42148 			_localctx.exception = re;
42149 			_errHandler.reportError(this, re);
42150 			_errHandler.recover(this, re);
42151 		}
42152 		finally {
42153 			exitRule();
42154 		}
42155 		return _localctx;
42156 	}
42157 
42158 	public static class ServerPermissionContext extends ParserRuleContext {
42159 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
42160 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
42161 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
42162 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42163 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
42164 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
42165 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
42166 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
42167 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
42168 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
42169 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
42170 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
42171 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
42172 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
42173 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
42174 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
42175 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
42176 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
42177 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
42178 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
42179 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
42180 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
42181 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
42182 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
42183 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
42184 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
42185 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42186 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
42187 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
42188 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
42189 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
42190 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
42191 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
42192 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
42193 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
42194 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
42195 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
42196 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
42197 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
42198 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42199 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42200 		public ServerPermissionContext(ParserRuleContext parent, int invokingState) {
42201 			super(parent, invokingState);
42202 		}
42203 		@Override public int getRuleIndex() { return RULE_serverPermission; }
42204 		@Override
42205 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42206 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPermission(this);
42207 			else return visitor.visitChildren(this);
42208 		}
42209 	}
42210 
42211 	public final ServerPermissionContext serverPermission() throws RecognitionException {
42212 		ServerPermissionContext _localctx = new ServerPermissionContext(_ctx, getState());
42213 		enterRule(_localctx, 816, RULE_serverPermission);
42214 		int _la;
42215 		try {
42216 			setState(5905);
42217 			_errHandler.sync(this);
42218 			switch ( getInterpreter().adaptivePredict(_input,690,_ctx) ) {
42219 			case 1:
42220 				enterOuterAlt(_localctx, 1);
42221 				{
42222 				setState(5828);
42223 				match(ADMINISTER);
42224 				setState(5829);
42225 				match(BULK);
42226 				setState(5830);
42227 				match(OPERATIONS);
42228 				}
42229 				break;
42230 			case 2:
42231 				enterOuterAlt(_localctx, 2);
42232 				{
42233 				setState(5831);
42234 				match(ALTER);
42235 				setState(5837);
42236 				_errHandler.sync(this);
42237 				switch (_input.LA(1)) {
42238 				case RESOURCES:
42239 					{
42240 					setState(5832);
42241 					match(RESOURCES);
42242 					}
42243 					break;
42244 				case SETTINGS:
42245 					{
42246 					setState(5833);
42247 					match(SETTINGS);
42248 					}
42249 					break;
42250 				case TRACE:
42251 					{
42252 					setState(5834);
42253 					match(TRACE);
42254 					}
42255 					break;
42256 				case SERVER:
42257 					{
42258 					setState(5835);
42259 					match(SERVER);
42260 					setState(5836);
42261 					match(STATE);
42262 					}
42263 					break;
42264 				default:
42265 					throw new NoViableAltException(this);
42266 				}
42267 				}
42268 				break;
42269 			case 3:
42270 				enterOuterAlt(_localctx, 3);
42271 				{
42272 				setState(5839);
42273 				match(ALTER);
42274 				setState(5840);
42275 				match(ANY);
42276 				setState(5858);
42277 				_errHandler.sync(this);
42278 				switch ( getInterpreter().adaptivePredict(_input,688,_ctx) ) {
42279 				case 1:
42280 					{
42281 					setState(5841);
42282 					match(AVAILABILITY);
42283 					setState(5842);
42284 					match(GROUP);
42285 					}
42286 					break;
42287 				case 2:
42288 					{
42289 					setState(5843);
42290 					match(CONNECTION);
42291 					}
42292 					break;
42293 				case 3:
42294 					{
42295 					setState(5844);
42296 					match(CREDENTIAL);
42297 					}
42298 					break;
42299 				case 4:
42300 					{
42301 					setState(5845);
42302 					match(DATABASE);
42303 					}
42304 					break;
42305 				case 5:
42306 					{
42307 					setState(5846);
42308 					match(ENDPOINT);
42309 					}
42310 					break;
42311 				case 6:
42312 					{
42313 					setState(5847);
42314 					match(EVENT);
42315 					setState(5848);
42316 					match(NOTIFICATION);
42317 					}
42318 					break;
42319 				case 7:
42320 					{
42321 					setState(5849);
42322 					match(EVENT);
42323 					setState(5850);
42324 					match(SESSION);
42325 					}
42326 					break;
42327 				case 8:
42328 					{
42329 					setState(5851);
42330 					match(LINKED);
42331 					setState(5852);
42332 					match(SERVER);
42333 					}
42334 					break;
42335 				case 9:
42336 					{
42337 					setState(5853);
42338 					match(LOGIN);
42339 					}
42340 					break;
42341 				case 10:
42342 					{
42343 					setState(5854);
42344 					match(SERVER);
42345 					setState(5855);
42346 					match(AUDIT);
42347 					}
42348 					break;
42349 				case 11:
42350 					{
42351 					setState(5856);
42352 					match(SERVER);
42353 					setState(5857);
42354 					match(ROLE);
42355 					}
42356 					break;
42357 				}
42358 				}
42359 				break;
42360 			case 4:
42361 				enterOuterAlt(_localctx, 4);
42362 				{
42363 				setState(5860);
42364 				match(AUTHENTICATE);
42365 				setState(5861);
42366 				match(SERVER);
42367 				}
42368 				break;
42369 			case 5:
42370 				enterOuterAlt(_localctx, 5);
42371 				{
42372 				setState(5862);
42373 				match(CONNECT);
42374 				setState(5863);
42375 				match(ANY);
42376 				setState(5864);
42377 				match(DATABASE);
42378 				}
42379 				break;
42380 			case 6:
42381 				enterOuterAlt(_localctx, 6);
42382 				{
42383 				setState(5865);
42384 				match(CONNECT);
42385 				setState(5866);
42386 				match(SQL);
42387 				}
42388 				break;
42389 			case 7:
42390 				enterOuterAlt(_localctx, 7);
42391 				{
42392 				setState(5867);
42393 				match(CONTROL);
42394 				setState(5868);
42395 				match(SERVER);
42396 				}
42397 				break;
42398 			case 8:
42399 				enterOuterAlt(_localctx, 8);
42400 				{
42401 				setState(5869);
42402 				match(CREATE);
42403 				setState(5870);
42404 				match(ANY);
42405 				setState(5871);
42406 				match(DATABASE);
42407 				}
42408 				break;
42409 			case 9:
42410 				enterOuterAlt(_localctx, 9);
42411 				{
42412 				setState(5872);
42413 				match(CREATE);
42414 				setState(5884);
42415 				_errHandler.sync(this);
42416 				switch (_input.LA(1)) {
42417 				case AVAILABILITY:
42418 					{
42419 					setState(5873);
42420 					match(AVAILABILITY);
42421 					setState(5874);
42422 					match(GROUP);
42423 					}
42424 					break;
42425 				case DDL:
42426 					{
42427 					setState(5875);
42428 					match(DDL);
42429 					setState(5876);
42430 					match(EVENT);
42431 					setState(5877);
42432 					match(NOTIFICATION);
42433 					}
42434 					break;
42435 				case ENDPOINT:
42436 					{
42437 					setState(5878);
42438 					match(ENDPOINT);
42439 					}
42440 					break;
42441 				case SERVER:
42442 					{
42443 					setState(5879);
42444 					match(SERVER);
42445 					setState(5880);
42446 					match(ROLE);
42447 					}
42448 					break;
42449 				case TRACE:
42450 					{
42451 					setState(5881);
42452 					match(TRACE);
42453 					setState(5882);
42454 					match(EVENT);
42455 					setState(5883);
42456 					match(NOTIFICATION);
42457 					}
42458 					break;
42459 				default:
42460 					throw new NoViableAltException(this);
42461 				}
42462 				}
42463 				break;
42464 			case 10:
42465 				enterOuterAlt(_localctx, 10);
42466 				{
42467 				setState(5886);
42468 				match(EXTERNAL);
42469 				setState(5887);
42470 				match(ACCESS);
42471 				setState(5888);
42472 				match(ASSEMBLY);
42473 				}
42474 				break;
42475 			case 11:
42476 				enterOuterAlt(_localctx, 11);
42477 				{
42478 				setState(5889);
42479 				match(IMPERSONATE);
42480 				setState(5890);
42481 				match(ANY);
42482 				setState(5891);
42483 				match(LOGIN);
42484 				}
42485 				break;
42486 			case 12:
42487 				enterOuterAlt(_localctx, 12);
42488 				{
42489 				setState(5892);
42490 				match(SELECT);
42491 				setState(5893);
42492 				match(ALL);
42493 				setState(5894);
42494 				match(USER);
42495 				setState(5895);
42496 				match(SECURABLES);
42497 				}
42498 				break;
42499 			case 13:
42500 				enterOuterAlt(_localctx, 13);
42501 				{
42502 				setState(5896);
42503 				match(SHUTDOWN);
42504 				}
42505 				break;
42506 			case 14:
42507 				enterOuterAlt(_localctx, 14);
42508 				{
42509 				setState(5897);
42510 				match(UNSAFE);
42511 				setState(5898);
42512 				match(ASSEMBLY);
42513 				}
42514 				break;
42515 			case 15:
42516 				enterOuterAlt(_localctx, 15);
42517 				{
42518 				setState(5899);
42519 				match(VIEW);
42520 				setState(5900);
42521 				match(ANY);
42522 				setState(5901);
42523 				_la = _input.LA(1);
42524 				if ( !(_la==DATABASE || _la==DEFINITION) ) {
42525 				_errHandler.recoverInline(this);
42526 				}
42527 				else {
42528 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42529 					_errHandler.reportMatch(this);
42530 					consume();
42531 				}
42532 				}
42533 				break;
42534 			case 16:
42535 				enterOuterAlt(_localctx, 16);
42536 				{
42537 				setState(5902);
42538 				match(VIEW);
42539 				setState(5903);
42540 				match(SERVER);
42541 				setState(5904);
42542 				match(STATE);
42543 				}
42544 				break;
42545 			}
42546 		}
42547 		catch (RecognitionException re) {
42548 			_localctx.exception = re;
42549 			_errHandler.reportError(this, re);
42550 			_errHandler.recover(this, re);
42551 		}
42552 		finally {
42553 			exitRule();
42554 		}
42555 		return _localctx;
42556 	}
42557 
42558 	public static class ServerPrincipalPermissionContext extends ParserRuleContext {
42559 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42560 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
42561 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
42562 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42563 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42564 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
42565 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42566 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
42567 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
42568 		public ServerPrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
42569 			super(parent, invokingState);
42570 		}
42571 		@Override public int getRuleIndex() { return RULE_serverPrincipalPermission; }
42572 		@Override
42573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPrincipalPermission(this);
42575 			else return visitor.visitChildren(this);
42576 		}
42577 	}
42578 
42579 	public final ServerPrincipalPermissionContext serverPrincipalPermission() throws RecognitionException {
42580 		ServerPrincipalPermissionContext _localctx = new ServerPrincipalPermissionContext(_ctx, getState());
42581 		enterRule(_localctx, 818, RULE_serverPrincipalPermission);
42582 		int _la;
42583 		try {
42584 			setState(5925);
42585 			_errHandler.sync(this);
42586 			switch ( getInterpreter().adaptivePredict(_input,694,_ctx) ) {
42587 			case 1:
42588 				enterOuterAlt(_localctx, 1);
42589 				{
42590 				setState(5907);
42591 				match(CONTROL);
42592 				setState(5909);
42593 				_errHandler.sync(this);
42594 				_la = _input.LA(1);
42595 				if (_la==SERVER) {
42596 					{
42597 					setState(5908);
42598 					match(SERVER);
42599 					}
42600 				}
42601 
42602 				}
42603 				break;
42604 			case 2:
42605 				enterOuterAlt(_localctx, 2);
42606 				{
42607 				setState(5911);
42608 				match(IMPERSONATE);
42609 				}
42610 				break;
42611 			case 3:
42612 				enterOuterAlt(_localctx, 3);
42613 				{
42614 				setState(5912);
42615 				match(VIEW);
42616 				setState(5914);
42617 				_errHandler.sync(this);
42618 				_la = _input.LA(1);
42619 				if (_la==ANY) {
42620 					{
42621 					setState(5913);
42622 					match(ANY);
42623 					}
42624 				}
42625 
42626 				setState(5916);
42627 				match(DEFINITION);
42628 				}
42629 				break;
42630 			case 4:
42631 				enterOuterAlt(_localctx, 4);
42632 				{
42633 				setState(5917);
42634 				match(ALTER);
42635 				}
42636 				break;
42637 			case 5:
42638 				enterOuterAlt(_localctx, 5);
42639 				{
42640 				setState(5918);
42641 				match(ALTER);
42642 				setState(5919);
42643 				match(ANY);
42644 				setState(5923);
42645 				_errHandler.sync(this);
42646 				switch (_input.LA(1)) {
42647 				case LOGIN:
42648 					{
42649 					setState(5920);
42650 					match(LOGIN);
42651 					}
42652 					break;
42653 				case SERVER:
42654 					{
42655 					setState(5921);
42656 					match(SERVER);
42657 					setState(5922);
42658 					match(ROLE);
42659 					}
42660 					break;
42661 				default:
42662 					throw new NoViableAltException(this);
42663 				}
42664 				}
42665 				break;
42666 			}
42667 		}
42668 		catch (RecognitionException re) {
42669 			_localctx.exception = re;
42670 			_errHandler.reportError(this, re);
42671 			_errHandler.recover(this, re);
42672 		}
42673 		finally {
42674 			exitRule();
42675 		}
42676 		return _localctx;
42677 	}
42678 
42679 	public static class DatabasePermissionContext extends ParserRuleContext {
42680 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
42681 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
42682 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
42683 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
42684 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42685 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
42686 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
42687 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
42688 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
42689 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
42690 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
42691 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
42692 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
42693 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
42694 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
42695 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42696 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
42697 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
42698 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
42699 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
42700 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
42701 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
42702 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
42703 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
42704 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
42705 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
42706 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
42707 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
42708 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
42709 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
42710 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
42711 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
42712 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
42713 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
42714 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
42715 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
42716 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
42717 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
42718 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
42719 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
42720 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
42721 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
42722 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
42723 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
42724 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
42725 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
42726 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
42727 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
42728 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
42729 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
42730 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
42731 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
42732 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
42733 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
42734 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
42735 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42736 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
42737 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
42738 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
42739 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
42740 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
42741 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
42742 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
42743 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
42744 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
42745 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42746 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
42747 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
42748 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
42749 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
42750 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
42751 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
42752 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
42753 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
42754 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
42755 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
42756 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
42757 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
42758 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
42759 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
42760 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
42761 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
42762 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
42763 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
42764 		public DatabasePermissionContext(ParserRuleContext parent, int invokingState) {
42765 			super(parent, invokingState);
42766 		}
42767 		@Override public int getRuleIndex() { return RULE_databasePermission; }
42768 		@Override
42769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePermission(this);
42771 			else return visitor.visitChildren(this);
42772 		}
42773 	}
42774 
42775 	public final DatabasePermissionContext databasePermission() throws RecognitionException {
42776 		DatabasePermissionContext _localctx = new DatabasePermissionContext(_ctx, getState());
42777 		enterRule(_localctx, 820, RULE_databasePermission);
42778 		int _la;
42779 		try {
42780 			setState(6094);
42781 			_errHandler.sync(this);
42782 			switch ( getInterpreter().adaptivePredict(_input,707,_ctx) ) {
42783 			case 1:
42784 				enterOuterAlt(_localctx, 1);
42785 				{
42786 				setState(5927);
42787 				match(ADMINISTER);
42788 				setState(5928);
42789 				match(DATABASE);
42790 				setState(5929);
42791 				match(BULK);
42792 				setState(5930);
42793 				match(OPERATIONS);
42794 				}
42795 				break;
42796 			case 2:
42797 				enterOuterAlt(_localctx, 2);
42798 				{
42799 				setState(5931);
42800 				match(ALTER);
42801 				}
42802 				break;
42803 			case 3:
42804 				enterOuterAlt(_localctx, 3);
42805 				{
42806 				setState(5932);
42807 				match(ALTER);
42808 				setState(5933);
42809 				match(TRACE);
42810 				}
42811 				break;
42812 			case 4:
42813 				enterOuterAlt(_localctx, 4);
42814 				{
42815 				setState(5934);
42816 				match(ALTER);
42817 				setState(5935);
42818 				match(ANY);
42819 				setState(5993);
42820 				_errHandler.sync(this);
42821 				switch ( getInterpreter().adaptivePredict(_input,698,_ctx) ) {
42822 				case 1:
42823 					{
42824 					setState(5936);
42825 					match(APPLICATION);
42826 					setState(5937);
42827 					match(ROLE);
42828 					}
42829 					break;
42830 				case 2:
42831 					{
42832 					setState(5938);
42833 					match(ASSEMBLY);
42834 					}
42835 					break;
42836 				case 3:
42837 					{
42838 					setState(5943);
42839 					_errHandler.sync(this);
42840 					switch (_input.LA(1)) {
42841 					case SYMMETRIC:
42842 						{
42843 						setState(5939);
42844 						match(SYMMETRIC);
42845 						}
42846 						break;
42847 					case ASYMMETRIC:
42848 						{
42849 						setState(5940);
42850 						match(ASYMMETRIC);
42851 						}
42852 						break;
42853 					case COLUMN:
42854 						{
42855 						setState(5941);
42856 						match(COLUMN);
42857 						setState(5942);
42858 						match(ENCRYPTION);
42859 						}
42860 						break;
42861 					default:
42862 						throw new NoViableAltException(this);
42863 					}
42864 					setState(5945);
42865 					match(KEY);
42866 					}
42867 					break;
42868 				case 4:
42869 					{
42870 					setState(5946);
42871 					match(CERTIFICATE);
42872 					}
42873 					break;
42874 				case 5:
42875 					{
42876 					setState(5947);
42877 					match(CONNECTION);
42878 					}
42879 					break;
42880 				case 6:
42881 					{
42882 					setState(5948);
42883 					match(COLUMN);
42884 					setState(5949);
42885 					match(MASTER);
42886 					setState(5950);
42887 					match(KEY);
42888 					setState(5951);
42889 					match(DEFINITION);
42890 					}
42891 					break;
42892 				case 7:
42893 					{
42894 					setState(5952);
42895 					match(CONTRACT);
42896 					}
42897 					break;
42898 				case 8:
42899 					{
42900 					setState(5953);
42901 					match(DATABASE);
42902 					setState(5963);
42903 					_errHandler.sync(this);
42904 					switch ( getInterpreter().adaptivePredict(_input,696,_ctx) ) {
42905 					case 1:
42906 						{
42907 						setState(5954);
42908 						match(AUDIT);
42909 						}
42910 						break;
42911 					case 2:
42912 						{
42913 						setState(5955);
42914 						match(DDL);
42915 						setState(5956);
42916 						match(TRIGGER);
42917 						}
42918 						break;
42919 					case 3:
42920 						{
42921 						setState(5957);
42922 						match(EVENT);
42923 						setState(5958);
42924 						match(NOTIFICATION);
42925 						}
42926 						break;
42927 					case 4:
42928 						{
42929 						setState(5959);
42930 						match(EVENT);
42931 						setState(5960);
42932 						match(SESSION);
42933 						}
42934 						break;
42935 					case 5:
42936 						{
42937 						setState(5961);
42938 						match(SCOPED);
42939 						setState(5962);
42940 						match(CONFIGURATION);
42941 						}
42942 						break;
42943 					}
42944 					}
42945 					break;
42946 				case 9:
42947 					{
42948 					setState(5965);
42949 					match(DATASPACE);
42950 					}
42951 					break;
42952 				case 10:
42953 					{
42954 					setState(5966);
42955 					match(EVENT);
42956 					setState(5967);
42957 					_la = _input.LA(1);
42958 					if ( !(_la==SESSION || _la==NOTIFICATION) ) {
42959 					_errHandler.recoverInline(this);
42960 					}
42961 					else {
42962 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42963 						_errHandler.reportMatch(this);
42964 						consume();
42965 					}
42966 					}
42967 					break;
42968 				case 11:
42969 					{
42970 					setState(5968);
42971 					match(EXTERNAL);
42972 					setState(5974);
42973 					_errHandler.sync(this);
42974 					switch (_input.LA(1)) {
42975 					case DATA:
42976 						{
42977 						setState(5969);
42978 						match(DATA);
42979 						setState(5970);
42980 						match(SOURCE);
42981 						}
42982 						break;
42983 					case FILE:
42984 						{
42985 						setState(5971);
42986 						match(FILE);
42987 						setState(5972);
42988 						match(FORMAT);
42989 						}
42990 						break;
42991 					case LIBRARY:
42992 						{
42993 						setState(5973);
42994 						match(LIBRARY);
42995 						}
42996 						break;
42997 					default:
42998 						throw new NoViableAltException(this);
42999 					}
43000 					}
43001 					break;
43002 				case 12:
43003 					{
43004 					setState(5976);
43005 					match(FULLTEXT);
43006 					setState(5977);
43007 					match(CATALOG);
43008 					}
43009 					break;
43010 				case 13:
43011 					{
43012 					setState(5978);
43013 					match(MASK);
43014 					}
43015 					break;
43016 				case 14:
43017 					{
43018 					setState(5979);
43019 					match(MESSAGE);
43020 					setState(5980);
43021 					match(TYPE);
43022 					}
43023 					break;
43024 				case 15:
43025 					{
43026 					setState(5981);
43027 					match(REMOTE);
43028 					setState(5982);
43029 					match(SERVICE);
43030 					setState(5983);
43031 					match(BINDING);
43032 					}
43033 					break;
43034 				case 16:
43035 					{
43036 					setState(5984);
43037 					match(ROLE);
43038 					}
43039 					break;
43040 				case 17:
43041 					{
43042 					setState(5985);
43043 					match(ROUTE);
43044 					}
43045 					break;
43046 				case 18:
43047 					{
43048 					setState(5986);
43049 					match(SERVER);
43050 					setState(5987);
43051 					match(AUDIT);
43052 					}
43053 					break;
43054 				case 19:
43055 					{
43056 					setState(5988);
43057 					match(SCHEMA);
43058 					}
43059 					break;
43060 				case 20:
43061 					{
43062 					setState(5989);
43063 					match(SECURITY);
43064 					setState(5990);
43065 					match(POLICY);
43066 					}
43067 					break;
43068 				case 21:
43069 					{
43070 					setState(5991);
43071 					match(SERVICE);
43072 					}
43073 					break;
43074 				case 22:
43075 					{
43076 					setState(5992);
43077 					match(USER);
43078 					}
43079 					break;
43080 				}
43081 				}
43082 				break;
43083 			case 5:
43084 				enterOuterAlt(_localctx, 5);
43085 				{
43086 				setState(5995);
43087 				match(AUTHENTICATE);
43088 				setState(5997);
43089 				_errHandler.sync(this);
43090 				_la = _input.LA(1);
43091 				if (_la==SERVER) {
43092 					{
43093 					setState(5996);
43094 					match(SERVER);
43095 					}
43096 				}
43097 
43098 				}
43099 				break;
43100 			case 6:
43101 				enterOuterAlt(_localctx, 6);
43102 				{
43103 				setState(5999);
43104 				match(BACKUP);
43105 				setState(6000);
43106 				_la = _input.LA(1);
43107 				if ( !(_la==DATABASE || _la==LOG) ) {
43108 				_errHandler.recoverInline(this);
43109 				}
43110 				else {
43111 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43112 					_errHandler.reportMatch(this);
43113 					consume();
43114 				}
43115 				}
43116 				break;
43117 			case 7:
43118 				enterOuterAlt(_localctx, 7);
43119 				{
43120 				setState(6001);
43121 				match(CHECKPOINT);
43122 				}
43123 				break;
43124 			case 8:
43125 				enterOuterAlt(_localctx, 8);
43126 				{
43127 				setState(6002);
43128 				match(CONNECT);
43129 				}
43130 				break;
43131 			case 9:
43132 				enterOuterAlt(_localctx, 9);
43133 				{
43134 				setState(6003);
43135 				match(CONNECT);
43136 				setState(6005);
43137 				_errHandler.sync(this);
43138 				_la = _input.LA(1);
43139 				if (_la==REPLICATION) {
43140 					{
43141 					setState(6004);
43142 					match(REPLICATION);
43143 					}
43144 				}
43145 
43146 				}
43147 				break;
43148 			case 10:
43149 				enterOuterAlt(_localctx, 10);
43150 				{
43151 				setState(6007);
43152 				match(CONTROL);
43153 				setState(6009);
43154 				_errHandler.sync(this);
43155 				_la = _input.LA(1);
43156 				if (_la==SERVER) {
43157 					{
43158 					setState(6008);
43159 					match(SERVER);
43160 					}
43161 				}
43162 
43163 				}
43164 				break;
43165 			case 11:
43166 				enterOuterAlt(_localctx, 11);
43167 				{
43168 				setState(6011);
43169 				match(CREATE);
43170 				setState(6048);
43171 				_errHandler.sync(this);
43172 				switch ( getInterpreter().adaptivePredict(_input,703,_ctx) ) {
43173 				case 1:
43174 					{
43175 					setState(6012);
43176 					match(AGGREGATE);
43177 					}
43178 					break;
43179 				case 2:
43180 					{
43181 					setState(6013);
43182 					match(ASSEMBLY);
43183 					}
43184 					break;
43185 				case 3:
43186 					{
43187 					setState(6014);
43188 					_la = _input.LA(1);
43189 					if ( !(_la==SYMMETRIC || _la==ASYMMETRIC) ) {
43190 					_errHandler.recoverInline(this);
43191 					}
43192 					else {
43193 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43194 						_errHandler.reportMatch(this);
43195 						consume();
43196 					}
43197 					setState(6015);
43198 					match(KEY);
43199 					}
43200 					break;
43201 				case 4:
43202 					{
43203 					setState(6016);
43204 					match(CERTIFICATE);
43205 					}
43206 					break;
43207 				case 5:
43208 					{
43209 					setState(6017);
43210 					match(CONTRACT);
43211 					}
43212 					break;
43213 				case 6:
43214 					{
43215 					setState(6018);
43216 					match(DATABASE);
43217 					}
43218 					break;
43219 				case 7:
43220 					{
43221 					setState(6020);
43222 					_errHandler.sync(this);
43223 					_la = _input.LA(1);
43224 					if (_la==DATABASE) {
43225 						{
43226 						setState(6019);
43227 						match(DATABASE);
43228 						}
43229 					}
43230 
43231 					setState(6022);
43232 					match(DDL);
43233 					setState(6023);
43234 					match(EVENT);
43235 					setState(6024);
43236 					match(NOTIFICATION);
43237 					}
43238 					break;
43239 				case 8:
43240 					{
43241 					setState(6025);
43242 					match(DEFAULT);
43243 					}
43244 					break;
43245 				case 9:
43246 					{
43247 					setState(6026);
43248 					match(FULLTEXT);
43249 					setState(6027);
43250 					match(CATALOG);
43251 					}
43252 					break;
43253 				case 10:
43254 					{
43255 					setState(6028);
43256 					match(FUNCTION);
43257 					}
43258 					break;
43259 				case 11:
43260 					{
43261 					setState(6029);
43262 					match(MESSAGE);
43263 					setState(6030);
43264 					match(TYPE);
43265 					}
43266 					break;
43267 				case 12:
43268 					{
43269 					setState(6031);
43270 					match(PROCEDURE);
43271 					}
43272 					break;
43273 				case 13:
43274 					{
43275 					setState(6032);
43276 					match(QUEUE);
43277 					}
43278 					break;
43279 				case 14:
43280 					{
43281 					setState(6033);
43282 					match(REMOTE);
43283 					setState(6034);
43284 					match(SERVICE);
43285 					setState(6035);
43286 					match(BINDING);
43287 					}
43288 					break;
43289 				case 15:
43290 					{
43291 					setState(6036);
43292 					match(ROLE);
43293 					}
43294 					break;
43295 				case 16:
43296 					{
43297 					setState(6037);
43298 					match(ROUTE);
43299 					}
43300 					break;
43301 				case 17:
43302 					{
43303 					setState(6038);
43304 					match(RULE);
43305 					}
43306 					break;
43307 				case 18:
43308 					{
43309 					setState(6039);
43310 					match(SCHEMA);
43311 					}
43312 					break;
43313 				case 19:
43314 					{
43315 					setState(6040);
43316 					match(SERVICE);
43317 					}
43318 					break;
43319 				case 20:
43320 					{
43321 					setState(6041);
43322 					match(SYNONYM);
43323 					}
43324 					break;
43325 				case 21:
43326 					{
43327 					setState(6042);
43328 					match(TABLE);
43329 					}
43330 					break;
43331 				case 22:
43332 					{
43333 					setState(6043);
43334 					match(TYPE);
43335 					}
43336 					break;
43337 				case 23:
43338 					{
43339 					setState(6044);
43340 					match(VIEW);
43341 					}
43342 					break;
43343 				case 24:
43344 					{
43345 					setState(6045);
43346 					match(XML);
43347 					setState(6046);
43348 					match(SCHEMA);
43349 					setState(6047);
43350 					match(COLLECTION);
43351 					}
43352 					break;
43353 				}
43354 				}
43355 				break;
43356 			case 12:
43357 				enterOuterAlt(_localctx, 12);
43358 				{
43359 				setState(6050);
43360 				match(DELETE);
43361 				}
43362 				break;
43363 			case 13:
43364 				enterOuterAlt(_localctx, 13);
43365 				{
43366 				setState(6051);
43367 				match(EXECUTE);
43368 				}
43369 				break;
43370 			case 14:
43371 				enterOuterAlt(_localctx, 14);
43372 				{
43373 				setState(6052);
43374 				match(EXECUTE);
43375 				setState(6054);
43376 				_errHandler.sync(this);
43377 				_la = _input.LA(1);
43378 				if (_la==ANY) {
43379 					{
43380 					setState(6053);
43381 					match(ANY);
43382 					}
43383 				}
43384 
43385 				setState(6056);
43386 				match(EXTERNAL);
43387 				setState(6057);
43388 				match(SCRIPT);
43389 				}
43390 				break;
43391 			case 15:
43392 				enterOuterAlt(_localctx, 15);
43393 				{
43394 				setState(6058);
43395 				match(INSERT);
43396 				}
43397 				break;
43398 			case 16:
43399 				enterOuterAlt(_localctx, 16);
43400 				{
43401 				setState(6059);
43402 				match(KILL);
43403 				setState(6060);
43404 				match(DATABASE);
43405 				setState(6061);
43406 				match(CONNECTION);
43407 				}
43408 				break;
43409 			case 17:
43410 				enterOuterAlt(_localctx, 17);
43411 				{
43412 				setState(6062);
43413 				match(REFERENCES);
43414 				}
43415 				break;
43416 			case 18:
43417 				enterOuterAlt(_localctx, 18);
43418 				{
43419 				setState(6063);
43420 				match(SELECT);
43421 				}
43422 				break;
43423 			case 19:
43424 				enterOuterAlt(_localctx, 19);
43425 				{
43426 				setState(6064);
43427 				match(SHOWPLAN);
43428 				}
43429 				break;
43430 			case 20:
43431 				enterOuterAlt(_localctx, 20);
43432 				{
43433 				setState(6065);
43434 				match(SUBSCRIBE);
43435 				setState(6066);
43436 				match(QUERY);
43437 				setState(6067);
43438 				match(NOTIFICATIONS);
43439 				}
43440 				break;
43441 			case 21:
43442 				enterOuterAlt(_localctx, 21);
43443 				{
43444 				setState(6068);
43445 				match(TAKE);
43446 				setState(6069);
43447 				match(OWNERSHIP);
43448 				}
43449 				break;
43450 			case 22:
43451 				enterOuterAlt(_localctx, 22);
43452 				{
43453 				setState(6070);
43454 				match(UNMASK);
43455 				}
43456 				break;
43457 			case 23:
43458 				enterOuterAlt(_localctx, 23);
43459 				{
43460 				setState(6071);
43461 				match(UPDATE);
43462 				}
43463 				break;
43464 			case 24:
43465 				enterOuterAlt(_localctx, 24);
43466 				{
43467 				setState(6072);
43468 				match(VIEW);
43469 				setState(6073);
43470 				match(ANY);
43471 				setState(6074);
43472 				match(COLUMN);
43473 				setState(6075);
43474 				_la = _input.LA(1);
43475 				if ( !(_la==ENCRYPTION || _la==MASTER) ) {
43476 				_errHandler.recoverInline(this);
43477 				}
43478 				else {
43479 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43480 					_errHandler.reportMatch(this);
43481 					consume();
43482 				}
43483 				setState(6076);
43484 				match(KEY);
43485 				setState(6077);
43486 				match(DEFINITION);
43487 				}
43488 				break;
43489 			case 25:
43490 				enterOuterAlt(_localctx, 25);
43491 				{
43492 				setState(6078);
43493 				match(CREATE);
43494 				setState(6079);
43495 				match(ANY);
43496 				setState(6083);
43497 				_errHandler.sync(this);
43498 				switch (_input.LA(1)) {
43499 				case DATABASE:
43500 					{
43501 					setState(6080);
43502 					match(DATABASE);
43503 					}
43504 					break;
43505 				case EXTERNAL:
43506 					{
43507 					setState(6081);
43508 					match(EXTERNAL);
43509 					setState(6082);
43510 					match(LIBRARY);
43511 					}
43512 					break;
43513 				default:
43514 					throw new NoViableAltException(this);
43515 				}
43516 				}
43517 				break;
43518 			case 26:
43519 				enterOuterAlt(_localctx, 26);
43520 				{
43521 				setState(6085);
43522 				match(VIEW);
43523 				setState(6086);
43524 				_la = _input.LA(1);
43525 				if ( !(_la==DATABASE || _la==SERVER) ) {
43526 				_errHandler.recoverInline(this);
43527 				}
43528 				else {
43529 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43530 					_errHandler.reportMatch(this);
43531 					consume();
43532 				}
43533 				setState(6087);
43534 				match(STATE);
43535 				}
43536 				break;
43537 			case 27:
43538 				enterOuterAlt(_localctx, 27);
43539 				{
43540 				setState(6088);
43541 				match(VIEW);
43542 				setState(6090);
43543 				_errHandler.sync(this);
43544 				_la = _input.LA(1);
43545 				if (_la==ANY) {
43546 					{
43547 					setState(6089);
43548 					match(ANY);
43549 					}
43550 				}
43551 
43552 				setState(6092);
43553 				match(DEFINITION);
43554 				}
43555 				break;
43556 			case 28:
43557 				enterOuterAlt(_localctx, 28);
43558 				{
43559 				}
43560 				break;
43561 			}
43562 		}
43563 		catch (RecognitionException re) {
43564 			_localctx.exception = re;
43565 			_errHandler.reportError(this, re);
43566 			_errHandler.recover(this, re);
43567 		}
43568 		finally {
43569 			exitRule();
43570 		}
43571 		return _localctx;
43572 	}
43573 
43574 	public static class DatabasePrincipalPermissionContext extends ParserRuleContext {
43575 		public DatabaseUserPermissionContext databaseUserPermission() {
43576 			return getRuleContext(DatabaseUserPermissionContext.class,0);
43577 		}
43578 		public DatabaseRolePermissionContext databaseRolePermission() {
43579 			return getRuleContext(DatabaseRolePermissionContext.class,0);
43580 		}
43581 		public ApplicationRolePermissionContext applicationRolePermission() {
43582 			return getRuleContext(ApplicationRolePermissionContext.class,0);
43583 		}
43584 		public DatabasePrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
43585 			super(parent, invokingState);
43586 		}
43587 		@Override public int getRuleIndex() { return RULE_databasePrincipalPermission; }
43588 		@Override
43589 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43590 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePrincipalPermission(this);
43591 			else return visitor.visitChildren(this);
43592 		}
43593 	}
43594 
43595 	public final DatabasePrincipalPermissionContext databasePrincipalPermission() throws RecognitionException {
43596 		DatabasePrincipalPermissionContext _localctx = new DatabasePrincipalPermissionContext(_ctx, getState());
43597 		enterRule(_localctx, 822, RULE_databasePrincipalPermission);
43598 		try {
43599 			setState(6099);
43600 			_errHandler.sync(this);
43601 			switch ( getInterpreter().adaptivePredict(_input,708,_ctx) ) {
43602 			case 1:
43603 				enterOuterAlt(_localctx, 1);
43604 				{
43605 				setState(6096);
43606 				databaseUserPermission();
43607 				}
43608 				break;
43609 			case 2:
43610 				enterOuterAlt(_localctx, 2);
43611 				{
43612 				setState(6097);
43613 				databaseRolePermission();
43614 				}
43615 				break;
43616 			case 3:
43617 				enterOuterAlt(_localctx, 3);
43618 				{
43619 				setState(6098);
43620 				applicationRolePermission();
43621 				}
43622 				break;
43623 			}
43624 		}
43625 		catch (RecognitionException re) {
43626 			_localctx.exception = re;
43627 			_errHandler.reportError(this, re);
43628 			_errHandler.recover(this, re);
43629 		}
43630 		finally {
43631 			exitRule();
43632 		}
43633 		return _localctx;
43634 	}
43635 
43636 	public static class DatabaseUserPermissionContext extends ParserRuleContext {
43637 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43638 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
43639 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43640 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43641 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43642 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43643 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
43644 		public DatabaseUserPermissionContext(ParserRuleContext parent, int invokingState) {
43645 			super(parent, invokingState);
43646 		}
43647 		@Override public int getRuleIndex() { return RULE_databaseUserPermission; }
43648 		@Override
43649 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43650 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseUserPermission(this);
43651 			else return visitor.visitChildren(this);
43652 		}
43653 	}
43654 
43655 	public final DatabaseUserPermissionContext databaseUserPermission() throws RecognitionException {
43656 		DatabaseUserPermissionContext _localctx = new DatabaseUserPermissionContext(_ctx, getState());
43657 		enterRule(_localctx, 824, RULE_databaseUserPermission);
43658 		try {
43659 			setState(6109);
43660 			_errHandler.sync(this);
43661 			switch ( getInterpreter().adaptivePredict(_input,709,_ctx) ) {
43662 			case 1:
43663 				enterOuterAlt(_localctx, 1);
43664 				{
43665 				setState(6101);
43666 				match(CONTROL);
43667 				}
43668 				break;
43669 			case 2:
43670 				enterOuterAlt(_localctx, 2);
43671 				{
43672 				setState(6102);
43673 				match(IMPERSONATE);
43674 				}
43675 				break;
43676 			case 3:
43677 				enterOuterAlt(_localctx, 3);
43678 				{
43679 				setState(6103);
43680 				match(ALTER);
43681 				}
43682 				break;
43683 			case 4:
43684 				enterOuterAlt(_localctx, 4);
43685 				{
43686 				setState(6104);
43687 				match(VIEW);
43688 				setState(6105);
43689 				match(DEFINITION);
43690 				}
43691 				break;
43692 			case 5:
43693 				enterOuterAlt(_localctx, 5);
43694 				{
43695 				setState(6106);
43696 				match(ALTER);
43697 				setState(6107);
43698 				match(ANY);
43699 				setState(6108);
43700 				match(USER);
43701 				}
43702 				break;
43703 			}
43704 		}
43705 		catch (RecognitionException re) {
43706 			_localctx.exception = re;
43707 			_errHandler.reportError(this, re);
43708 			_errHandler.recover(this, re);
43709 		}
43710 		finally {
43711 			exitRule();
43712 		}
43713 		return _localctx;
43714 	}
43715 
43716 	public static class DatabaseRolePermissionContext extends ParserRuleContext {
43717 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43718 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43719 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43720 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43721 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43722 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43723 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43724 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43725 		public DatabaseRolePermissionContext(ParserRuleContext parent, int invokingState) {
43726 			super(parent, invokingState);
43727 		}
43728 		@Override public int getRuleIndex() { return RULE_databaseRolePermission; }
43729 		@Override
43730 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43731 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseRolePermission(this);
43732 			else return visitor.visitChildren(this);
43733 		}
43734 	}
43735 
43736 	public final DatabaseRolePermissionContext databaseRolePermission() throws RecognitionException {
43737 		DatabaseRolePermissionContext _localctx = new DatabaseRolePermissionContext(_ctx, getState());
43738 		enterRule(_localctx, 826, RULE_databaseRolePermission);
43739 		try {
43740 			setState(6120);
43741 			_errHandler.sync(this);
43742 			switch ( getInterpreter().adaptivePredict(_input,710,_ctx) ) {
43743 			case 1:
43744 				enterOuterAlt(_localctx, 1);
43745 				{
43746 				setState(6111);
43747 				match(CONTROL);
43748 				}
43749 				break;
43750 			case 2:
43751 				enterOuterAlt(_localctx, 2);
43752 				{
43753 				setState(6112);
43754 				match(TAKE);
43755 				setState(6113);
43756 				match(OWNERSHIP);
43757 				}
43758 				break;
43759 			case 3:
43760 				enterOuterAlt(_localctx, 3);
43761 				{
43762 				setState(6114);
43763 				match(ALTER);
43764 				}
43765 				break;
43766 			case 4:
43767 				enterOuterAlt(_localctx, 4);
43768 				{
43769 				setState(6115);
43770 				match(VIEW);
43771 				setState(6116);
43772 				match(DEFINITION);
43773 				}
43774 				break;
43775 			case 5:
43776 				enterOuterAlt(_localctx, 5);
43777 				{
43778 				setState(6117);
43779 				match(ALTER);
43780 				setState(6118);
43781 				match(ANY);
43782 				setState(6119);
43783 				match(ROLE);
43784 				}
43785 				break;
43786 			}
43787 		}
43788 		catch (RecognitionException re) {
43789 			_localctx.exception = re;
43790 			_errHandler.reportError(this, re);
43791 			_errHandler.recover(this, re);
43792 		}
43793 		finally {
43794 			exitRule();
43795 		}
43796 		return _localctx;
43797 	}
43798 
43799 	public static class ApplicationRolePermissionContext extends ParserRuleContext {
43800 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43801 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43802 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43803 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43804 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43805 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
43806 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43807 		public ApplicationRolePermissionContext(ParserRuleContext parent, int invokingState) {
43808 			super(parent, invokingState);
43809 		}
43810 		@Override public int getRuleIndex() { return RULE_applicationRolePermission; }
43811 		@Override
43812 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43813 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApplicationRolePermission(this);
43814 			else return visitor.visitChildren(this);
43815 		}
43816 	}
43817 
43818 	public final ApplicationRolePermissionContext applicationRolePermission() throws RecognitionException {
43819 		ApplicationRolePermissionContext _localctx = new ApplicationRolePermissionContext(_ctx, getState());
43820 		enterRule(_localctx, 828, RULE_applicationRolePermission);
43821 		try {
43822 			setState(6130);
43823 			_errHandler.sync(this);
43824 			switch ( getInterpreter().adaptivePredict(_input,711,_ctx) ) {
43825 			case 1:
43826 				enterOuterAlt(_localctx, 1);
43827 				{
43828 				setState(6122);
43829 				match(CONTROL);
43830 				}
43831 				break;
43832 			case 2:
43833 				enterOuterAlt(_localctx, 2);
43834 				{
43835 				setState(6123);
43836 				match(ALTER);
43837 				}
43838 				break;
43839 			case 3:
43840 				enterOuterAlt(_localctx, 3);
43841 				{
43842 				setState(6124);
43843 				match(VIEW);
43844 				setState(6125);
43845 				match(DEFINITION);
43846 				}
43847 				break;
43848 			case 4:
43849 				enterOuterAlt(_localctx, 4);
43850 				{
43851 				setState(6126);
43852 				match(ALTER);
43853 				setState(6127);
43854 				match(ANY);
43855 				setState(6128);
43856 				match(APPLICATION);
43857 				setState(6129);
43858 				match(ROLE);
43859 				}
43860 				break;
43861 			}
43862 		}
43863 		catch (RecognitionException re) {
43864 			_localctx.exception = re;
43865 			_errHandler.reportError(this, re);
43866 			_errHandler.recover(this, re);
43867 		}
43868 		finally {
43869 			exitRule();
43870 		}
43871 		return _localctx;
43872 	}
43873 
43874 	public static class DatabaseScopedCredentialPermissionContext extends ParserRuleContext {
43875 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43876 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43877 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43878 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43879 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43880 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43881 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43882 		public DatabaseScopedCredentialPermissionContext(ParserRuleContext parent, int invokingState) {
43883 			super(parent, invokingState);
43884 		}
43885 		@Override public int getRuleIndex() { return RULE_databaseScopedCredentialPermission; }
43886 		@Override
43887 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43888 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseScopedCredentialPermission(this);
43889 			else return visitor.visitChildren(this);
43890 		}
43891 	}
43892 
43893 	public final DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() throws RecognitionException {
43894 		DatabaseScopedCredentialPermissionContext _localctx = new DatabaseScopedCredentialPermissionContext(_ctx, getState());
43895 		enterRule(_localctx, 830, RULE_databaseScopedCredentialPermission);
43896 		try {
43897 			setState(6139);
43898 			_errHandler.sync(this);
43899 			switch (_input.LA(1)) {
43900 			case CONTROL:
43901 				enterOuterAlt(_localctx, 1);
43902 				{
43903 				setState(6132);
43904 				match(CONTROL);
43905 				}
43906 				break;
43907 			case TAKE:
43908 				enterOuterAlt(_localctx, 2);
43909 				{
43910 				setState(6133);
43911 				match(TAKE);
43912 				setState(6134);
43913 				match(OWNERSHIP);
43914 				}
43915 				break;
43916 			case ALTER:
43917 				enterOuterAlt(_localctx, 3);
43918 				{
43919 				setState(6135);
43920 				match(ALTER);
43921 				}
43922 				break;
43923 			case REFERENCES:
43924 				enterOuterAlt(_localctx, 4);
43925 				{
43926 				setState(6136);
43927 				match(REFERENCES);
43928 				}
43929 				break;
43930 			case VIEW:
43931 				enterOuterAlt(_localctx, 5);
43932 				{
43933 				setState(6137);
43934 				match(VIEW);
43935 				setState(6138);
43936 				match(DEFINITION);
43937 				}
43938 				break;
43939 			default:
43940 				throw new NoViableAltException(this);
43941 			}
43942 		}
43943 		catch (RecognitionException re) {
43944 			_localctx.exception = re;
43945 			_errHandler.reportError(this, re);
43946 			_errHandler.recover(this, re);
43947 		}
43948 		finally {
43949 			exitRule();
43950 		}
43951 		return _localctx;
43952 	}
43953 
43954 	public static class SchemaPermissionContext extends ParserRuleContext {
43955 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43956 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43957 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
43958 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
43959 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
43960 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
43961 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
43962 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43963 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43964 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43965 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43966 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
43967 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43968 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
43969 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
43970 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43971 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43972 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
43973 		public SchemaPermissionContext(ParserRuleContext parent, int invokingState) {
43974 			super(parent, invokingState);
43975 		}
43976 		@Override public int getRuleIndex() { return RULE_schemaPermission; }
43977 		@Override
43978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaPermission(this);
43980 			else return visitor.visitChildren(this);
43981 		}
43982 	}
43983 
43984 	public final SchemaPermissionContext schemaPermission() throws RecognitionException {
43985 		SchemaPermissionContext _localctx = new SchemaPermissionContext(_ctx, getState());
43986 		enterRule(_localctx, 832, RULE_schemaPermission);
43987 		try {
43988 			setState(6161);
43989 			_errHandler.sync(this);
43990 			switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) {
43991 			case 1:
43992 				enterOuterAlt(_localctx, 1);
43993 				{
43994 				setState(6141);
43995 				match(ALTER);
43996 				}
43997 				break;
43998 			case 2:
43999 				enterOuterAlt(_localctx, 2);
44000 				{
44001 				setState(6142);
44002 				match(CONTROL);
44003 				}
44004 				break;
44005 			case 3:
44006 				enterOuterAlt(_localctx, 3);
44007 				{
44008 				setState(6143);
44009 				match(CREATE);
44010 				setState(6144);
44011 				match(SEQUENCE);
44012 				}
44013 				break;
44014 			case 4:
44015 				enterOuterAlt(_localctx, 4);
44016 				{
44017 				setState(6145);
44018 				match(DELETE);
44019 				}
44020 				break;
44021 			case 5:
44022 				enterOuterAlt(_localctx, 5);
44023 				{
44024 				setState(6146);
44025 				match(EXECUTE);
44026 				}
44027 				break;
44028 			case 6:
44029 				enterOuterAlt(_localctx, 6);
44030 				{
44031 				setState(6147);
44032 				match(INSERT);
44033 				}
44034 				break;
44035 			case 7:
44036 				enterOuterAlt(_localctx, 7);
44037 				{
44038 				setState(6148);
44039 				match(REFERENCES);
44040 				}
44041 				break;
44042 			case 8:
44043 				enterOuterAlt(_localctx, 8);
44044 				{
44045 				setState(6149);
44046 				match(SELECT);
44047 				}
44048 				break;
44049 			case 9:
44050 				enterOuterAlt(_localctx, 9);
44051 				{
44052 				setState(6150);
44053 				match(TAKE);
44054 				setState(6151);
44055 				match(OWNERSHIP);
44056 				}
44057 				break;
44058 			case 10:
44059 				enterOuterAlt(_localctx, 10);
44060 				{
44061 				setState(6152);
44062 				match(UPDATE);
44063 				}
44064 				break;
44065 			case 11:
44066 				enterOuterAlt(_localctx, 11);
44067 				{
44068 				setState(6153);
44069 				match(VIEW);
44070 				setState(6154);
44071 				match(CHANGE);
44072 				setState(6155);
44073 				match(TRACKING);
44074 				}
44075 				break;
44076 			case 12:
44077 				enterOuterAlt(_localctx, 12);
44078 				{
44079 				setState(6156);
44080 				match(VIEW);
44081 				setState(6157);
44082 				match(DEFINITION);
44083 				}
44084 				break;
44085 			case 13:
44086 				enterOuterAlt(_localctx, 13);
44087 				{
44088 				setState(6158);
44089 				match(ALTER);
44090 				setState(6159);
44091 				match(ANY);
44092 				setState(6160);
44093 				match(SCHEMA);
44094 				}
44095 				break;
44096 			}
44097 		}
44098 		catch (RecognitionException re) {
44099 			_localctx.exception = re;
44100 			_errHandler.reportError(this, re);
44101 			_errHandler.recover(this, re);
44102 		}
44103 		finally {
44104 			exitRule();
44105 		}
44106 		return _localctx;
44107 	}
44108 
44109 	public static class SearchPropertyListPermissionContext extends ParserRuleContext {
44110 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44111 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44112 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44113 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44114 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44115 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44116 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44117 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44118 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
44119 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
44120 		public SearchPropertyListPermissionContext(ParserRuleContext parent, int invokingState) {
44121 			super(parent, invokingState);
44122 		}
44123 		@Override public int getRuleIndex() { return RULE_searchPropertyListPermission; }
44124 		@Override
44125 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44126 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSearchPropertyListPermission(this);
44127 			else return visitor.visitChildren(this);
44128 		}
44129 	}
44130 
44131 	public final SearchPropertyListPermissionContext searchPropertyListPermission() throws RecognitionException {
44132 		SearchPropertyListPermissionContext _localctx = new SearchPropertyListPermissionContext(_ctx, getState());
44133 		enterRule(_localctx, 834, RULE_searchPropertyListPermission);
44134 		try {
44135 			setState(6174);
44136 			_errHandler.sync(this);
44137 			switch ( getInterpreter().adaptivePredict(_input,714,_ctx) ) {
44138 			case 1:
44139 				enterOuterAlt(_localctx, 1);
44140 				{
44141 				setState(6163);
44142 				match(ALTER);
44143 				}
44144 				break;
44145 			case 2:
44146 				enterOuterAlt(_localctx, 2);
44147 				{
44148 				setState(6164);
44149 				match(CONTROL);
44150 				}
44151 				break;
44152 			case 3:
44153 				enterOuterAlt(_localctx, 3);
44154 				{
44155 				setState(6165);
44156 				match(REFERENCES);
44157 				}
44158 				break;
44159 			case 4:
44160 				enterOuterAlt(_localctx, 4);
44161 				{
44162 				setState(6166);
44163 				match(TAKE);
44164 				setState(6167);
44165 				match(OWNERSHIP);
44166 				}
44167 				break;
44168 			case 5:
44169 				enterOuterAlt(_localctx, 5);
44170 				{
44171 				setState(6168);
44172 				match(VIEW);
44173 				setState(6169);
44174 				match(DEFINITION);
44175 				}
44176 				break;
44177 			case 6:
44178 				enterOuterAlt(_localctx, 6);
44179 				{
44180 				setState(6170);
44181 				match(ALTER);
44182 				setState(6171);
44183 				match(ANY);
44184 				setState(6172);
44185 				match(FULLTEXT);
44186 				setState(6173);
44187 				match(CATALOG);
44188 				}
44189 				break;
44190 			}
44191 		}
44192 		catch (RecognitionException re) {
44193 			_localctx.exception = re;
44194 			_errHandler.reportError(this, re);
44195 			_errHandler.recover(this, re);
44196 		}
44197 		finally {
44198 			exitRule();
44199 		}
44200 		return _localctx;
44201 	}
44202 
44203 	public static class ServiceBrokerPermissionContext extends ParserRuleContext {
44204 		public ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() {
44205 			return getRuleContext(ServiceBrokerContractsPermissionContext.class,0);
44206 		}
44207 		public ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() {
44208 			return getRuleContext(ServiceBrokerMessageTypesPermissionContext.class,0);
44209 		}
44210 		public ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() {
44211 			return getRuleContext(ServiceBrokerRemoteServiceBindingsPermissionContext.class,0);
44212 		}
44213 		public ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() {
44214 			return getRuleContext(ServiceBrokerRoutesPermissionContext.class,0);
44215 		}
44216 		public ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() {
44217 			return getRuleContext(ServiceBrokerServicesPermissionContext.class,0);
44218 		}
44219 		public ServiceBrokerPermissionContext(ParserRuleContext parent, int invokingState) {
44220 			super(parent, invokingState);
44221 		}
44222 		@Override public int getRuleIndex() { return RULE_serviceBrokerPermission; }
44223 		@Override
44224 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44225 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerPermission(this);
44226 			else return visitor.visitChildren(this);
44227 		}
44228 	}
44229 
44230 	public final ServiceBrokerPermissionContext serviceBrokerPermission() throws RecognitionException {
44231 		ServiceBrokerPermissionContext _localctx = new ServiceBrokerPermissionContext(_ctx, getState());
44232 		enterRule(_localctx, 836, RULE_serviceBrokerPermission);
44233 		try {
44234 			setState(6181);
44235 			_errHandler.sync(this);
44236 			switch ( getInterpreter().adaptivePredict(_input,715,_ctx) ) {
44237 			case 1:
44238 				enterOuterAlt(_localctx, 1);
44239 				{
44240 				setState(6176);
44241 				serviceBrokerContractsPermission();
44242 				}
44243 				break;
44244 			case 2:
44245 				enterOuterAlt(_localctx, 2);
44246 				{
44247 				setState(6177);
44248 				serviceBrokerMessageTypesPermission();
44249 				}
44250 				break;
44251 			case 3:
44252 				enterOuterAlt(_localctx, 3);
44253 				{
44254 				setState(6178);
44255 				serviceBrokerRemoteServiceBindingsPermission();
44256 				}
44257 				break;
44258 			case 4:
44259 				enterOuterAlt(_localctx, 4);
44260 				{
44261 				setState(6179);
44262 				serviceBrokerRoutesPermission();
44263 				}
44264 				break;
44265 			case 5:
44266 				enterOuterAlt(_localctx, 5);
44267 				{
44268 				setState(6180);
44269 				serviceBrokerServicesPermission();
44270 				}
44271 				break;
44272 			}
44273 		}
44274 		catch (RecognitionException re) {
44275 			_localctx.exception = re;
44276 			_errHandler.reportError(this, re);
44277 			_errHandler.recover(this, re);
44278 		}
44279 		finally {
44280 			exitRule();
44281 		}
44282 		return _localctx;
44283 	}
44284 
44285 	public static class ServiceBrokerContractsPermissionContext extends ParserRuleContext {
44286 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44287 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44288 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44289 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44290 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44291 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44292 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44293 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44294 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
44295 		public ServiceBrokerContractsPermissionContext(ParserRuleContext parent, int invokingState) {
44296 			super(parent, invokingState);
44297 		}
44298 		@Override public int getRuleIndex() { return RULE_serviceBrokerContractsPermission; }
44299 		@Override
44300 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44301 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerContractsPermission(this);
44302 			else return visitor.visitChildren(this);
44303 		}
44304 	}
44305 
44306 	public final ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() throws RecognitionException {
44307 		ServiceBrokerContractsPermissionContext _localctx = new ServiceBrokerContractsPermissionContext(_ctx, getState());
44308 		enterRule(_localctx, 838, RULE_serviceBrokerContractsPermission);
44309 		try {
44310 			setState(6193);
44311 			_errHandler.sync(this);
44312 			switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) {
44313 			case 1:
44314 				enterOuterAlt(_localctx, 1);
44315 				{
44316 				setState(6183);
44317 				match(CONTROL);
44318 				}
44319 				break;
44320 			case 2:
44321 				enterOuterAlt(_localctx, 2);
44322 				{
44323 				setState(6184);
44324 				match(TAKE);
44325 				setState(6185);
44326 				match(OWNERSHIP);
44327 				}
44328 				break;
44329 			case 3:
44330 				enterOuterAlt(_localctx, 3);
44331 				{
44332 				setState(6186);
44333 				match(ALTER);
44334 				}
44335 				break;
44336 			case 4:
44337 				enterOuterAlt(_localctx, 4);
44338 				{
44339 				setState(6187);
44340 				match(REFERENCES);
44341 				}
44342 				break;
44343 			case 5:
44344 				enterOuterAlt(_localctx, 5);
44345 				{
44346 				setState(6188);
44347 				match(VIEW);
44348 				setState(6189);
44349 				match(DEFINITION);
44350 				}
44351 				break;
44352 			case 6:
44353 				enterOuterAlt(_localctx, 6);
44354 				{
44355 				setState(6190);
44356 				match(ALTER);
44357 				setState(6191);
44358 				match(ANY);
44359 				setState(6192);
44360 				match(CONTRACT);
44361 				}
44362 				break;
44363 			}
44364 		}
44365 		catch (RecognitionException re) {
44366 			_localctx.exception = re;
44367 			_errHandler.reportError(this, re);
44368 			_errHandler.recover(this, re);
44369 		}
44370 		finally {
44371 			exitRule();
44372 		}
44373 		return _localctx;
44374 	}
44375 
44376 	public static class ServiceBrokerMessageTypesPermissionContext extends ParserRuleContext {
44377 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44378 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44379 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44380 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44381 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44382 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44383 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44384 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44385 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
44386 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
44387 		public ServiceBrokerMessageTypesPermissionContext(ParserRuleContext parent, int invokingState) {
44388 			super(parent, invokingState);
44389 		}
44390 		@Override public int getRuleIndex() { return RULE_serviceBrokerMessageTypesPermission; }
44391 		@Override
44392 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44393 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerMessageTypesPermission(this);
44394 			else return visitor.visitChildren(this);
44395 		}
44396 	}
44397 
44398 	public final ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() throws RecognitionException {
44399 		ServiceBrokerMessageTypesPermissionContext _localctx = new ServiceBrokerMessageTypesPermissionContext(_ctx, getState());
44400 		enterRule(_localctx, 840, RULE_serviceBrokerMessageTypesPermission);
44401 		try {
44402 			setState(6206);
44403 			_errHandler.sync(this);
44404 			switch ( getInterpreter().adaptivePredict(_input,717,_ctx) ) {
44405 			case 1:
44406 				enterOuterAlt(_localctx, 1);
44407 				{
44408 				setState(6195);
44409 				match(CONTROL);
44410 				}
44411 				break;
44412 			case 2:
44413 				enterOuterAlt(_localctx, 2);
44414 				{
44415 				setState(6196);
44416 				match(TAKE);
44417 				setState(6197);
44418 				match(OWNERSHIP);
44419 				}
44420 				break;
44421 			case 3:
44422 				enterOuterAlt(_localctx, 3);
44423 				{
44424 				setState(6198);
44425 				match(ALTER);
44426 				}
44427 				break;
44428 			case 4:
44429 				enterOuterAlt(_localctx, 4);
44430 				{
44431 				setState(6199);
44432 				match(REFERENCES);
44433 				}
44434 				break;
44435 			case 5:
44436 				enterOuterAlt(_localctx, 5);
44437 				{
44438 				setState(6200);
44439 				match(VIEW);
44440 				setState(6201);
44441 				match(DEFINITION);
44442 				}
44443 				break;
44444 			case 6:
44445 				enterOuterAlt(_localctx, 6);
44446 				{
44447 				setState(6202);
44448 				match(ALTER);
44449 				setState(6203);
44450 				match(ANY);
44451 				setState(6204);
44452 				match(MESSAGE);
44453 				setState(6205);
44454 				match(TYPE);
44455 				}
44456 				break;
44457 			}
44458 		}
44459 		catch (RecognitionException re) {
44460 			_localctx.exception = re;
44461 			_errHandler.reportError(this, re);
44462 			_errHandler.recover(this, re);
44463 		}
44464 		finally {
44465 			exitRule();
44466 		}
44467 		return _localctx;
44468 	}
44469 
44470 	public static class ServiceBrokerRemoteServiceBindingsPermissionContext extends ParserRuleContext {
44471 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44472 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44473 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44474 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44475 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44476 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44477 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44478 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
44479 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
44480 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
44481 		public ServiceBrokerRemoteServiceBindingsPermissionContext(ParserRuleContext parent, int invokingState) {
44482 			super(parent, invokingState);
44483 		}
44484 		@Override public int getRuleIndex() { return RULE_serviceBrokerRemoteServiceBindingsPermission; }
44485 		@Override
44486 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44487 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRemoteServiceBindingsPermission(this);
44488 			else return visitor.visitChildren(this);
44489 		}
44490 	}
44491 
44492 	public final ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() throws RecognitionException {
44493 		ServiceBrokerRemoteServiceBindingsPermissionContext _localctx = new ServiceBrokerRemoteServiceBindingsPermissionContext(_ctx, getState());
44494 		enterRule(_localctx, 842, RULE_serviceBrokerRemoteServiceBindingsPermission);
44495 		try {
44496 			setState(6219);
44497 			_errHandler.sync(this);
44498 			switch ( getInterpreter().adaptivePredict(_input,718,_ctx) ) {
44499 			case 1:
44500 				enterOuterAlt(_localctx, 1);
44501 				{
44502 				setState(6208);
44503 				match(CONTROL);
44504 				}
44505 				break;
44506 			case 2:
44507 				enterOuterAlt(_localctx, 2);
44508 				{
44509 				setState(6209);
44510 				match(TAKE);
44511 				setState(6210);
44512 				match(OWNERSHIP);
44513 				}
44514 				break;
44515 			case 3:
44516 				enterOuterAlt(_localctx, 3);
44517 				{
44518 				setState(6211);
44519 				match(ALTER);
44520 				}
44521 				break;
44522 			case 4:
44523 				enterOuterAlt(_localctx, 4);
44524 				{
44525 				setState(6212);
44526 				match(VIEW);
44527 				setState(6213);
44528 				match(DEFINITION);
44529 				}
44530 				break;
44531 			case 5:
44532 				enterOuterAlt(_localctx, 5);
44533 				{
44534 				setState(6214);
44535 				match(ALTER);
44536 				setState(6215);
44537 				match(ANY);
44538 				setState(6216);
44539 				match(REMOTE);
44540 				setState(6217);
44541 				match(SERVICE);
44542 				setState(6218);
44543 				match(BINDING);
44544 				}
44545 				break;
44546 			}
44547 		}
44548 		catch (RecognitionException re) {
44549 			_localctx.exception = re;
44550 			_errHandler.reportError(this, re);
44551 			_errHandler.recover(this, re);
44552 		}
44553 		finally {
44554 			exitRule();
44555 		}
44556 		return _localctx;
44557 	}
44558 
44559 	public static class ServiceBrokerRoutesPermissionContext extends ParserRuleContext {
44560 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44561 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44562 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44563 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44564 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44565 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44566 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44567 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
44568 		public ServiceBrokerRoutesPermissionContext(ParserRuleContext parent, int invokingState) {
44569 			super(parent, invokingState);
44570 		}
44571 		@Override public int getRuleIndex() { return RULE_serviceBrokerRoutesPermission; }
44572 		@Override
44573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRoutesPermission(this);
44575 			else return visitor.visitChildren(this);
44576 		}
44577 	}
44578 
44579 	public final ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() throws RecognitionException {
44580 		ServiceBrokerRoutesPermissionContext _localctx = new ServiceBrokerRoutesPermissionContext(_ctx, getState());
44581 		enterRule(_localctx, 844, RULE_serviceBrokerRoutesPermission);
44582 		try {
44583 			setState(6230);
44584 			_errHandler.sync(this);
44585 			switch ( getInterpreter().adaptivePredict(_input,719,_ctx) ) {
44586 			case 1:
44587 				enterOuterAlt(_localctx, 1);
44588 				{
44589 				setState(6221);
44590 				match(CONTROL);
44591 				}
44592 				break;
44593 			case 2:
44594 				enterOuterAlt(_localctx, 2);
44595 				{
44596 				setState(6222);
44597 				match(TAKE);
44598 				setState(6223);
44599 				match(OWNERSHIP);
44600 				}
44601 				break;
44602 			case 3:
44603 				enterOuterAlt(_localctx, 3);
44604 				{
44605 				setState(6224);
44606 				match(ALTER);
44607 				}
44608 				break;
44609 			case 4:
44610 				enterOuterAlt(_localctx, 4);
44611 				{
44612 				setState(6225);
44613 				match(VIEW);
44614 				setState(6226);
44615 				match(DEFINITION);
44616 				}
44617 				break;
44618 			case 5:
44619 				enterOuterAlt(_localctx, 5);
44620 				{
44621 				setState(6227);
44622 				match(ALTER);
44623 				setState(6228);
44624 				match(ANY);
44625 				setState(6229);
44626 				match(ROUTE);
44627 				}
44628 				break;
44629 			}
44630 		}
44631 		catch (RecognitionException re) {
44632 			_localctx.exception = re;
44633 			_errHandler.reportError(this, re);
44634 			_errHandler.recover(this, re);
44635 		}
44636 		finally {
44637 			exitRule();
44638 		}
44639 		return _localctx;
44640 	}
44641 
44642 	public static class ServiceBrokerServicesPermissionContext extends ParserRuleContext {
44643 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44644 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44645 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44646 		public TerminalNode SEND() { return getToken(SQLServerStatementParser.SEND, 0); }
44647 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44648 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44649 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44650 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44651 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
44652 		public ServiceBrokerServicesPermissionContext(ParserRuleContext parent, int invokingState) {
44653 			super(parent, invokingState);
44654 		}
44655 		@Override public int getRuleIndex() { return RULE_serviceBrokerServicesPermission; }
44656 		@Override
44657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerServicesPermission(this);
44659 			else return visitor.visitChildren(this);
44660 		}
44661 	}
44662 
44663 	public final ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() throws RecognitionException {
44664 		ServiceBrokerServicesPermissionContext _localctx = new ServiceBrokerServicesPermissionContext(_ctx, getState());
44665 		enterRule(_localctx, 846, RULE_serviceBrokerServicesPermission);
44666 		try {
44667 			setState(6242);
44668 			_errHandler.sync(this);
44669 			switch ( getInterpreter().adaptivePredict(_input,720,_ctx) ) {
44670 			case 1:
44671 				enterOuterAlt(_localctx, 1);
44672 				{
44673 				setState(6232);
44674 				match(CONTROL);
44675 				}
44676 				break;
44677 			case 2:
44678 				enterOuterAlt(_localctx, 2);
44679 				{
44680 				setState(6233);
44681 				match(TAKE);
44682 				setState(6234);
44683 				match(OWNERSHIP);
44684 				}
44685 				break;
44686 			case 3:
44687 				enterOuterAlt(_localctx, 3);
44688 				{
44689 				setState(6235);
44690 				match(SEND);
44691 				}
44692 				break;
44693 			case 4:
44694 				enterOuterAlt(_localctx, 4);
44695 				{
44696 				setState(6236);
44697 				match(ALTER);
44698 				}
44699 				break;
44700 			case 5:
44701 				enterOuterAlt(_localctx, 5);
44702 				{
44703 				setState(6237);
44704 				match(VIEW);
44705 				setState(6238);
44706 				match(DEFINITION);
44707 				}
44708 				break;
44709 			case 6:
44710 				enterOuterAlt(_localctx, 6);
44711 				{
44712 				setState(6239);
44713 				match(ALTER);
44714 				setState(6240);
44715 				match(ANY);
44716 				setState(6241);
44717 				match(SERVICE);
44718 				}
44719 				break;
44720 			}
44721 		}
44722 		catch (RecognitionException re) {
44723 			_localctx.exception = re;
44724 			_errHandler.reportError(this, re);
44725 			_errHandler.recover(this, re);
44726 		}
44727 		finally {
44728 			exitRule();
44729 		}
44730 		return _localctx;
44731 	}
44732 
44733 	public static class EndpointPermissionContext extends ParserRuleContext {
44734 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44735 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
44736 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44737 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44738 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44739 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44740 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44741 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44742 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44743 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
44744 		public EndpointPermissionContext(ParserRuleContext parent, int invokingState) {
44745 			super(parent, invokingState);
44746 		}
44747 		@Override public int getRuleIndex() { return RULE_endpointPermission; }
44748 		@Override
44749 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44750 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEndpointPermission(this);
44751 			else return visitor.visitChildren(this);
44752 		}
44753 	}
44754 
44755 	public final EndpointPermissionContext endpointPermission() throws RecognitionException {
44756 		EndpointPermissionContext _localctx = new EndpointPermissionContext(_ctx, getState());
44757 		enterRule(_localctx, 848, RULE_endpointPermission);
44758 		int _la;
44759 		try {
44760 			setState(6260);
44761 			_errHandler.sync(this);
44762 			switch ( getInterpreter().adaptivePredict(_input,723,_ctx) ) {
44763 			case 1:
44764 				enterOuterAlt(_localctx, 1);
44765 				{
44766 				setState(6244);
44767 				match(ALTER);
44768 				}
44769 				break;
44770 			case 2:
44771 				enterOuterAlt(_localctx, 2);
44772 				{
44773 				setState(6245);
44774 				match(CONNECT);
44775 				}
44776 				break;
44777 			case 3:
44778 				enterOuterAlt(_localctx, 3);
44779 				{
44780 				setState(6246);
44781 				match(CONTROL);
44782 				setState(6248);
44783 				_errHandler.sync(this);
44784 				_la = _input.LA(1);
44785 				if (_la==SERVER) {
44786 					{
44787 					setState(6247);
44788 					match(SERVER);
44789 					}
44790 				}
44791 
44792 				}
44793 				break;
44794 			case 4:
44795 				enterOuterAlt(_localctx, 4);
44796 				{
44797 				setState(6250);
44798 				match(TAKE);
44799 				setState(6251);
44800 				match(OWNERSHIP);
44801 				}
44802 				break;
44803 			case 5:
44804 				enterOuterAlt(_localctx, 5);
44805 				{
44806 				setState(6252);
44807 				match(VIEW);
44808 				setState(6254);
44809 				_errHandler.sync(this);
44810 				_la = _input.LA(1);
44811 				if (_la==ANY) {
44812 					{
44813 					setState(6253);
44814 					match(ANY);
44815 					}
44816 				}
44817 
44818 				setState(6256);
44819 				match(DEFINITION);
44820 				}
44821 				break;
44822 			case 6:
44823 				enterOuterAlt(_localctx, 6);
44824 				{
44825 				setState(6257);
44826 				match(ALTER);
44827 				setState(6258);
44828 				match(ANY);
44829 				setState(6259);
44830 				match(ENDPOINT);
44831 				}
44832 				break;
44833 			}
44834 		}
44835 		catch (RecognitionException re) {
44836 			_localctx.exception = re;
44837 			_errHandler.reportError(this, re);
44838 			_errHandler.recover(this, re);
44839 		}
44840 		finally {
44841 			exitRule();
44842 		}
44843 		return _localctx;
44844 	}
44845 
44846 	public static class CertificatePermissionContext extends ParserRuleContext {
44847 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44848 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44849 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44850 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44851 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44852 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44853 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44854 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44855 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
44856 		public CertificatePermissionContext(ParserRuleContext parent, int invokingState) {
44857 			super(parent, invokingState);
44858 		}
44859 		@Override public int getRuleIndex() { return RULE_certificatePermission; }
44860 		@Override
44861 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44862 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCertificatePermission(this);
44863 			else return visitor.visitChildren(this);
44864 		}
44865 	}
44866 
44867 	public final CertificatePermissionContext certificatePermission() throws RecognitionException {
44868 		CertificatePermissionContext _localctx = new CertificatePermissionContext(_ctx, getState());
44869 		enterRule(_localctx, 850, RULE_certificatePermission);
44870 		try {
44871 			setState(6272);
44872 			_errHandler.sync(this);
44873 			switch ( getInterpreter().adaptivePredict(_input,724,_ctx) ) {
44874 			case 1:
44875 				enterOuterAlt(_localctx, 1);
44876 				{
44877 				setState(6262);
44878 				match(CONTROL);
44879 				}
44880 				break;
44881 			case 2:
44882 				enterOuterAlt(_localctx, 2);
44883 				{
44884 				setState(6263);
44885 				match(TAKE);
44886 				setState(6264);
44887 				match(OWNERSHIP);
44888 				}
44889 				break;
44890 			case 3:
44891 				enterOuterAlt(_localctx, 3);
44892 				{
44893 				setState(6265);
44894 				match(ALTER);
44895 				}
44896 				break;
44897 			case 4:
44898 				enterOuterAlt(_localctx, 4);
44899 				{
44900 				setState(6266);
44901 				match(REFERENCES);
44902 				}
44903 				break;
44904 			case 5:
44905 				enterOuterAlt(_localctx, 5);
44906 				{
44907 				setState(6267);
44908 				match(VIEW);
44909 				setState(6268);
44910 				match(DEFINITION);
44911 				}
44912 				break;
44913 			case 6:
44914 				enterOuterAlt(_localctx, 6);
44915 				{
44916 				setState(6269);
44917 				match(ALTER);
44918 				setState(6270);
44919 				match(ANY);
44920 				setState(6271);
44921 				match(CERTIFICATE);
44922 				}
44923 				break;
44924 			}
44925 		}
44926 		catch (RecognitionException re) {
44927 			_localctx.exception = re;
44928 			_errHandler.reportError(this, re);
44929 			_errHandler.recover(this, re);
44930 		}
44931 		finally {
44932 			exitRule();
44933 		}
44934 		return _localctx;
44935 	}
44936 
44937 	public static class SymmetricKeyPermissionContext extends ParserRuleContext {
44938 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44939 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44940 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44941 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44942 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44943 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44944 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44945 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44946 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
44947 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
44948 		public SymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
44949 			super(parent, invokingState);
44950 		}
44951 		@Override public int getRuleIndex() { return RULE_symmetricKeyPermission; }
44952 		@Override
44953 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44954 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSymmetricKeyPermission(this);
44955 			else return visitor.visitChildren(this);
44956 		}
44957 	}
44958 
44959 	public final SymmetricKeyPermissionContext symmetricKeyPermission() throws RecognitionException {
44960 		SymmetricKeyPermissionContext _localctx = new SymmetricKeyPermissionContext(_ctx, getState());
44961 		enterRule(_localctx, 852, RULE_symmetricKeyPermission);
44962 		try {
44963 			setState(6285);
44964 			_errHandler.sync(this);
44965 			switch ( getInterpreter().adaptivePredict(_input,725,_ctx) ) {
44966 			case 1:
44967 				enterOuterAlt(_localctx, 1);
44968 				{
44969 				setState(6274);
44970 				match(ALTER);
44971 				}
44972 				break;
44973 			case 2:
44974 				enterOuterAlt(_localctx, 2);
44975 				{
44976 				setState(6275);
44977 				match(CONTROL);
44978 				}
44979 				break;
44980 			case 3:
44981 				enterOuterAlt(_localctx, 3);
44982 				{
44983 				setState(6276);
44984 				match(REFERENCES);
44985 				}
44986 				break;
44987 			case 4:
44988 				enterOuterAlt(_localctx, 4);
44989 				{
44990 				setState(6277);
44991 				match(TAKE);
44992 				setState(6278);
44993 				match(OWNERSHIP);
44994 				}
44995 				break;
44996 			case 5:
44997 				enterOuterAlt(_localctx, 5);
44998 				{
44999 				setState(6279);
45000 				match(VIEW);
45001 				setState(6280);
45002 				match(DEFINITION);
45003 				}
45004 				break;
45005 			case 6:
45006 				enterOuterAlt(_localctx, 6);
45007 				{
45008 				setState(6281);
45009 				match(ALTER);
45010 				setState(6282);
45011 				match(ANY);
45012 				setState(6283);
45013 				match(SYMMETRIC);
45014 				setState(6284);
45015 				match(KEY);
45016 				}
45017 				break;
45018 			}
45019 		}
45020 		catch (RecognitionException re) {
45021 			_localctx.exception = re;
45022 			_errHandler.reportError(this, re);
45023 			_errHandler.recover(this, re);
45024 		}
45025 		finally {
45026 			exitRule();
45027 		}
45028 		return _localctx;
45029 	}
45030 
45031 	public static class AsymmetricKeyPermissionContext extends ParserRuleContext {
45032 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45033 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45034 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45035 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45036 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45037 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45038 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45039 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45040 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
45041 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
45042 		public AsymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
45043 			super(parent, invokingState);
45044 		}
45045 		@Override public int getRuleIndex() { return RULE_asymmetricKeyPermission; }
45046 		@Override
45047 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45048 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAsymmetricKeyPermission(this);
45049 			else return visitor.visitChildren(this);
45050 		}
45051 	}
45052 
45053 	public final AsymmetricKeyPermissionContext asymmetricKeyPermission() throws RecognitionException {
45054 		AsymmetricKeyPermissionContext _localctx = new AsymmetricKeyPermissionContext(_ctx, getState());
45055 		enterRule(_localctx, 854, RULE_asymmetricKeyPermission);
45056 		try {
45057 			setState(6298);
45058 			_errHandler.sync(this);
45059 			switch ( getInterpreter().adaptivePredict(_input,726,_ctx) ) {
45060 			case 1:
45061 				enterOuterAlt(_localctx, 1);
45062 				{
45063 				setState(6287);
45064 				match(CONTROL);
45065 				}
45066 				break;
45067 			case 2:
45068 				enterOuterAlt(_localctx, 2);
45069 				{
45070 				setState(6288);
45071 				match(TAKE);
45072 				setState(6289);
45073 				match(OWNERSHIP);
45074 				}
45075 				break;
45076 			case 3:
45077 				enterOuterAlt(_localctx, 3);
45078 				{
45079 				setState(6290);
45080 				match(ALTER);
45081 				}
45082 				break;
45083 			case 4:
45084 				enterOuterAlt(_localctx, 4);
45085 				{
45086 				setState(6291);
45087 				match(REFERENCES);
45088 				}
45089 				break;
45090 			case 5:
45091 				enterOuterAlt(_localctx, 5);
45092 				{
45093 				setState(6292);
45094 				match(VIEW);
45095 				setState(6293);
45096 				match(DEFINITION);
45097 				}
45098 				break;
45099 			case 6:
45100 				enterOuterAlt(_localctx, 6);
45101 				{
45102 				setState(6294);
45103 				match(ALTER);
45104 				setState(6295);
45105 				match(ANY);
45106 				setState(6296);
45107 				match(ASYMMETRIC);
45108 				setState(6297);
45109 				match(KEY);
45110 				}
45111 				break;
45112 			}
45113 		}
45114 		catch (RecognitionException re) {
45115 			_localctx.exception = re;
45116 			_errHandler.reportError(this, re);
45117 			_errHandler.recover(this, re);
45118 		}
45119 		finally {
45120 			exitRule();
45121 		}
45122 		return _localctx;
45123 	}
45124 
45125 	public static class AssemblyPermissionContext extends ParserRuleContext {
45126 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45127 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45128 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45129 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45130 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45131 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45132 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45133 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45134 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
45135 		public AssemblyPermissionContext(ParserRuleContext parent, int invokingState) {
45136 			super(parent, invokingState);
45137 		}
45138 		@Override public int getRuleIndex() { return RULE_assemblyPermission; }
45139 		@Override
45140 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45141 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssemblyPermission(this);
45142 			else return visitor.visitChildren(this);
45143 		}
45144 	}
45145 
45146 	public final AssemblyPermissionContext assemblyPermission() throws RecognitionException {
45147 		AssemblyPermissionContext _localctx = new AssemblyPermissionContext(_ctx, getState());
45148 		enterRule(_localctx, 856, RULE_assemblyPermission);
45149 		try {
45150 			setState(6310);
45151 			_errHandler.sync(this);
45152 			switch ( getInterpreter().adaptivePredict(_input,727,_ctx) ) {
45153 			case 1:
45154 				enterOuterAlt(_localctx, 1);
45155 				{
45156 				setState(6300);
45157 				match(CONTROL);
45158 				}
45159 				break;
45160 			case 2:
45161 				enterOuterAlt(_localctx, 2);
45162 				{
45163 				setState(6301);
45164 				match(TAKE);
45165 				setState(6302);
45166 				match(OWNERSHIP);
45167 				}
45168 				break;
45169 			case 3:
45170 				enterOuterAlt(_localctx, 3);
45171 				{
45172 				setState(6303);
45173 				match(ALTER);
45174 				}
45175 				break;
45176 			case 4:
45177 				enterOuterAlt(_localctx, 4);
45178 				{
45179 				setState(6304);
45180 				match(REFERENCES);
45181 				}
45182 				break;
45183 			case 5:
45184 				enterOuterAlt(_localctx, 5);
45185 				{
45186 				setState(6305);
45187 				match(VIEW);
45188 				setState(6306);
45189 				match(DEFINITION);
45190 				}
45191 				break;
45192 			case 6:
45193 				enterOuterAlt(_localctx, 6);
45194 				{
45195 				setState(6307);
45196 				match(ALTER);
45197 				setState(6308);
45198 				match(ANY);
45199 				setState(6309);
45200 				match(ASSEMBLY);
45201 				}
45202 				break;
45203 			}
45204 		}
45205 		catch (RecognitionException re) {
45206 			_localctx.exception = re;
45207 			_errHandler.reportError(this, re);
45208 			_errHandler.recover(this, re);
45209 		}
45210 		finally {
45211 			exitRule();
45212 		}
45213 		return _localctx;
45214 	}
45215 
45216 	public static class AvailabilityGroupPermissionContext extends ParserRuleContext {
45217 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45218 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
45219 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45220 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
45221 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45222 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45223 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45224 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45225 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45226 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
45227 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
45228 		public AvailabilityGroupPermissionContext(ParserRuleContext parent, int invokingState) {
45229 			super(parent, invokingState);
45230 		}
45231 		@Override public int getRuleIndex() { return RULE_availabilityGroupPermission; }
45232 		@Override
45233 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45234 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAvailabilityGroupPermission(this);
45235 			else return visitor.visitChildren(this);
45236 		}
45237 	}
45238 
45239 	public final AvailabilityGroupPermissionContext availabilityGroupPermission() throws RecognitionException {
45240 		AvailabilityGroupPermissionContext _localctx = new AvailabilityGroupPermissionContext(_ctx, getState());
45241 		enterRule(_localctx, 858, RULE_availabilityGroupPermission);
45242 		int _la;
45243 		try {
45244 			setState(6329);
45245 			_errHandler.sync(this);
45246 			switch ( getInterpreter().adaptivePredict(_input,730,_ctx) ) {
45247 			case 1:
45248 				enterOuterAlt(_localctx, 1);
45249 				{
45250 				setState(6312);
45251 				match(ALTER);
45252 				}
45253 				break;
45254 			case 2:
45255 				enterOuterAlt(_localctx, 2);
45256 				{
45257 				setState(6313);
45258 				match(CONNECT);
45259 				}
45260 				break;
45261 			case 3:
45262 				enterOuterAlt(_localctx, 3);
45263 				{
45264 				setState(6314);
45265 				match(CONTROL);
45266 				setState(6316);
45267 				_errHandler.sync(this);
45268 				_la = _input.LA(1);
45269 				if (_la==SERVER) {
45270 					{
45271 					setState(6315);
45272 					match(SERVER);
45273 					}
45274 				}
45275 
45276 				}
45277 				break;
45278 			case 4:
45279 				enterOuterAlt(_localctx, 4);
45280 				{
45281 				setState(6318);
45282 				match(TAKE);
45283 				setState(6319);
45284 				match(OWNERSHIP);
45285 				}
45286 				break;
45287 			case 5:
45288 				enterOuterAlt(_localctx, 5);
45289 				{
45290 				setState(6320);
45291 				match(VIEW);
45292 				setState(6322);
45293 				_errHandler.sync(this);
45294 				_la = _input.LA(1);
45295 				if (_la==ANY) {
45296 					{
45297 					setState(6321);
45298 					match(ANY);
45299 					}
45300 				}
45301 
45302 				setState(6324);
45303 				match(DEFINITION);
45304 				}
45305 				break;
45306 			case 6:
45307 				enterOuterAlt(_localctx, 6);
45308 				{
45309 				setState(6325);
45310 				match(ALTER);
45311 				setState(6326);
45312 				match(ANY);
45313 				setState(6327);
45314 				match(AVAILABILITY);
45315 				setState(6328);
45316 				match(GROUP);
45317 				}
45318 				break;
45319 			}
45320 		}
45321 		catch (RecognitionException re) {
45322 			_localctx.exception = re;
45323 			_errHandler.reportError(this, re);
45324 			_errHandler.recover(this, re);
45325 		}
45326 		finally {
45327 			exitRule();
45328 		}
45329 		return _localctx;
45330 	}
45331 
45332 	public static class FullTextPermissionContext extends ParserRuleContext {
45333 		public FullTextCatalogPermissionContext fullTextCatalogPermission() {
45334 			return getRuleContext(FullTextCatalogPermissionContext.class,0);
45335 		}
45336 		public FullTextStoplistPermissionContext fullTextStoplistPermission() {
45337 			return getRuleContext(FullTextStoplistPermissionContext.class,0);
45338 		}
45339 		public FullTextPermissionContext(ParserRuleContext parent, int invokingState) {
45340 			super(parent, invokingState);
45341 		}
45342 		@Override public int getRuleIndex() { return RULE_fullTextPermission; }
45343 		@Override
45344 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45345 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextPermission(this);
45346 			else return visitor.visitChildren(this);
45347 		}
45348 	}
45349 
45350 	public final FullTextPermissionContext fullTextPermission() throws RecognitionException {
45351 		FullTextPermissionContext _localctx = new FullTextPermissionContext(_ctx, getState());
45352 		enterRule(_localctx, 860, RULE_fullTextPermission);
45353 		try {
45354 			setState(6333);
45355 			_errHandler.sync(this);
45356 			switch ( getInterpreter().adaptivePredict(_input,731,_ctx) ) {
45357 			case 1:
45358 				enterOuterAlt(_localctx, 1);
45359 				{
45360 				setState(6331);
45361 				fullTextCatalogPermission();
45362 				}
45363 				break;
45364 			case 2:
45365 				enterOuterAlt(_localctx, 2);
45366 				{
45367 				setState(6332);
45368 				fullTextStoplistPermission();
45369 				}
45370 				break;
45371 			}
45372 		}
45373 		catch (RecognitionException re) {
45374 			_localctx.exception = re;
45375 			_errHandler.reportError(this, re);
45376 			_errHandler.recover(this, re);
45377 		}
45378 		finally {
45379 			exitRule();
45380 		}
45381 		return _localctx;
45382 	}
45383 
45384 	public static class FullTextCatalogPermissionContext extends ParserRuleContext {
45385 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45386 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45387 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45388 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45389 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45390 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45391 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45392 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45393 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
45394 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
45395 		public FullTextCatalogPermissionContext(ParserRuleContext parent, int invokingState) {
45396 			super(parent, invokingState);
45397 		}
45398 		@Override public int getRuleIndex() { return RULE_fullTextCatalogPermission; }
45399 		@Override
45400 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45401 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextCatalogPermission(this);
45402 			else return visitor.visitChildren(this);
45403 		}
45404 	}
45405 
45406 	public final FullTextCatalogPermissionContext fullTextCatalogPermission() throws RecognitionException {
45407 		FullTextCatalogPermissionContext _localctx = new FullTextCatalogPermissionContext(_ctx, getState());
45408 		enterRule(_localctx, 862, RULE_fullTextCatalogPermission);
45409 		try {
45410 			setState(6346);
45411 			_errHandler.sync(this);
45412 			switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) {
45413 			case 1:
45414 				enterOuterAlt(_localctx, 1);
45415 				{
45416 				setState(6335);
45417 				match(CONTROL);
45418 				}
45419 				break;
45420 			case 2:
45421 				enterOuterAlt(_localctx, 2);
45422 				{
45423 				setState(6336);
45424 				match(TAKE);
45425 				setState(6337);
45426 				match(OWNERSHIP);
45427 				}
45428 				break;
45429 			case 3:
45430 				enterOuterAlt(_localctx, 3);
45431 				{
45432 				setState(6338);
45433 				match(ALTER);
45434 				}
45435 				break;
45436 			case 4:
45437 				enterOuterAlt(_localctx, 4);
45438 				{
45439 				setState(6339);
45440 				match(REFERENCES);
45441 				}
45442 				break;
45443 			case 5:
45444 				enterOuterAlt(_localctx, 5);
45445 				{
45446 				setState(6340);
45447 				match(VIEW);
45448 				setState(6341);
45449 				match(DEFINITION);
45450 				}
45451 				break;
45452 			case 6:
45453 				enterOuterAlt(_localctx, 6);
45454 				{
45455 				setState(6342);
45456 				match(ALTER);
45457 				setState(6343);
45458 				match(ANY);
45459 				setState(6344);
45460 				match(FULLTEXT);
45461 				setState(6345);
45462 				match(CATALOG);
45463 				}
45464 				break;
45465 			}
45466 		}
45467 		catch (RecognitionException re) {
45468 			_localctx.exception = re;
45469 			_errHandler.reportError(this, re);
45470 			_errHandler.recover(this, re);
45471 		}
45472 		finally {
45473 			exitRule();
45474 		}
45475 		return _localctx;
45476 	}
45477 
45478 	public static class FullTextStoplistPermissionContext extends ParserRuleContext {
45479 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45480 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45481 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45482 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45483 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45484 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45485 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45486 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45487 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
45488 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
45489 		public FullTextStoplistPermissionContext(ParserRuleContext parent, int invokingState) {
45490 			super(parent, invokingState);
45491 		}
45492 		@Override public int getRuleIndex() { return RULE_fullTextStoplistPermission; }
45493 		@Override
45494 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45495 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextStoplistPermission(this);
45496 			else return visitor.visitChildren(this);
45497 		}
45498 	}
45499 
45500 	public final FullTextStoplistPermissionContext fullTextStoplistPermission() throws RecognitionException {
45501 		FullTextStoplistPermissionContext _localctx = new FullTextStoplistPermissionContext(_ctx, getState());
45502 		enterRule(_localctx, 864, RULE_fullTextStoplistPermission);
45503 		try {
45504 			setState(6359);
45505 			_errHandler.sync(this);
45506 			switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) {
45507 			case 1:
45508 				enterOuterAlt(_localctx, 1);
45509 				{
45510 				setState(6348);
45511 				match(ALTER);
45512 				}
45513 				break;
45514 			case 2:
45515 				enterOuterAlt(_localctx, 2);
45516 				{
45517 				setState(6349);
45518 				match(CONTROL);
45519 				}
45520 				break;
45521 			case 3:
45522 				enterOuterAlt(_localctx, 3);
45523 				{
45524 				setState(6350);
45525 				match(REFERENCES);
45526 				}
45527 				break;
45528 			case 4:
45529 				enterOuterAlt(_localctx, 4);
45530 				{
45531 				setState(6351);
45532 				match(TAKE);
45533 				setState(6352);
45534 				match(OWNERSHIP);
45535 				}
45536 				break;
45537 			case 5:
45538 				enterOuterAlt(_localctx, 5);
45539 				{
45540 				setState(6353);
45541 				match(VIEW);
45542 				setState(6354);
45543 				match(DEFINITION);
45544 				}
45545 				break;
45546 			case 6:
45547 				enterOuterAlt(_localctx, 6);
45548 				{
45549 				setState(6355);
45550 				match(ALTER);
45551 				setState(6356);
45552 				match(ANY);
45553 				setState(6357);
45554 				match(FULLTEXT);
45555 				setState(6358);
45556 				match(CATALOG);
45557 				}
45558 				break;
45559 			}
45560 		}
45561 		catch (RecognitionException re) {
45562 			_localctx.exception = re;
45563 			_errHandler.reportError(this, re);
45564 			_errHandler.recover(this, re);
45565 		}
45566 		finally {
45567 			exitRule();
45568 		}
45569 		return _localctx;
45570 	}
45571 
45572 	public static class TypePermissionContext extends ParserRuleContext {
45573 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45574 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45575 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45576 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45577 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45578 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45579 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45580 		public TypePermissionContext(ParserRuleContext parent, int invokingState) {
45581 			super(parent, invokingState);
45582 		}
45583 		@Override public int getRuleIndex() { return RULE_typePermission; }
45584 		@Override
45585 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45586 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTypePermission(this);
45587 			else return visitor.visitChildren(this);
45588 		}
45589 	}
45590 
45591 	public final TypePermissionContext typePermission() throws RecognitionException {
45592 		TypePermissionContext _localctx = new TypePermissionContext(_ctx, getState());
45593 		enterRule(_localctx, 866, RULE_typePermission);
45594 		try {
45595 			setState(6368);
45596 			_errHandler.sync(this);
45597 			switch (_input.LA(1)) {
45598 			case CONTROL:
45599 				enterOuterAlt(_localctx, 1);
45600 				{
45601 				setState(6361);
45602 				match(CONTROL);
45603 				}
45604 				break;
45605 			case EXECUTE:
45606 				enterOuterAlt(_localctx, 2);
45607 				{
45608 				setState(6362);
45609 				match(EXECUTE);
45610 				}
45611 				break;
45612 			case REFERENCES:
45613 				enterOuterAlt(_localctx, 3);
45614 				{
45615 				setState(6363);
45616 				match(REFERENCES);
45617 				}
45618 				break;
45619 			case TAKE:
45620 				enterOuterAlt(_localctx, 4);
45621 				{
45622 				setState(6364);
45623 				match(TAKE);
45624 				setState(6365);
45625 				match(OWNERSHIP);
45626 				}
45627 				break;
45628 			case VIEW:
45629 				enterOuterAlt(_localctx, 5);
45630 				{
45631 				setState(6366);
45632 				match(VIEW);
45633 				setState(6367);
45634 				match(DEFINITION);
45635 				}
45636 				break;
45637 			default:
45638 				throw new NoViableAltException(this);
45639 			}
45640 		}
45641 		catch (RecognitionException re) {
45642 			_localctx.exception = re;
45643 			_errHandler.reportError(this, re);
45644 			_errHandler.recover(this, re);
45645 		}
45646 		finally {
45647 			exitRule();
45648 		}
45649 		return _localctx;
45650 	}
45651 
45652 	public static class XmlSchemaCollectionPermissionContext extends ParserRuleContext {
45653 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45654 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45655 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45656 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45657 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45658 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45659 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45660 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45661 		public XmlSchemaCollectionPermissionContext(ParserRuleContext parent, int invokingState) {
45662 			super(parent, invokingState);
45663 		}
45664 		@Override public int getRuleIndex() { return RULE_xmlSchemaCollectionPermission; }
45665 		@Override
45666 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45667 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlSchemaCollectionPermission(this);
45668 			else return visitor.visitChildren(this);
45669 		}
45670 	}
45671 
45672 	public final XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() throws RecognitionException {
45673 		XmlSchemaCollectionPermissionContext _localctx = new XmlSchemaCollectionPermissionContext(_ctx, getState());
45674 		enterRule(_localctx, 868, RULE_xmlSchemaCollectionPermission);
45675 		try {
45676 			setState(6378);
45677 			_errHandler.sync(this);
45678 			switch (_input.LA(1)) {
45679 			case ALTER:
45680 				enterOuterAlt(_localctx, 1);
45681 				{
45682 				setState(6370);
45683 				match(ALTER);
45684 				}
45685 				break;
45686 			case CONTROL:
45687 				enterOuterAlt(_localctx, 2);
45688 				{
45689 				setState(6371);
45690 				match(CONTROL);
45691 				}
45692 				break;
45693 			case EXECUTE:
45694 				enterOuterAlt(_localctx, 3);
45695 				{
45696 				setState(6372);
45697 				match(EXECUTE);
45698 				}
45699 				break;
45700 			case REFERENCES:
45701 				enterOuterAlt(_localctx, 4);
45702 				{
45703 				setState(6373);
45704 				match(REFERENCES);
45705 				}
45706 				break;
45707 			case TAKE:
45708 				enterOuterAlt(_localctx, 5);
45709 				{
45710 				setState(6374);
45711 				match(TAKE);
45712 				setState(6375);
45713 				match(OWNERSHIP);
45714 				}
45715 				break;
45716 			case VIEW:
45717 				enterOuterAlt(_localctx, 6);
45718 				{
45719 				setState(6376);
45720 				match(VIEW);
45721 				setState(6377);
45722 				match(DEFINITION);
45723 				}
45724 				break;
45725 			default:
45726 				throw new NoViableAltException(this);
45727 			}
45728 		}
45729 		catch (RecognitionException re) {
45730 			_localctx.exception = re;
45731 			_errHandler.reportError(this, re);
45732 			_errHandler.recover(this, re);
45733 		}
45734 		finally {
45735 			exitRule();
45736 		}
45737 		return _localctx;
45738 	}
45739 
45740 	public static class SystemObjectPermissionContext extends ParserRuleContext {
45741 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
45742 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45743 		public SystemObjectPermissionContext(ParserRuleContext parent, int invokingState) {
45744 			super(parent, invokingState);
45745 		}
45746 		@Override public int getRuleIndex() { return RULE_systemObjectPermission; }
45747 		@Override
45748 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45749 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSystemObjectPermission(this);
45750 			else return visitor.visitChildren(this);
45751 		}
45752 	}
45753 
45754 	public final SystemObjectPermissionContext systemObjectPermission() throws RecognitionException {
45755 		SystemObjectPermissionContext _localctx = new SystemObjectPermissionContext(_ctx, getState());
45756 		enterRule(_localctx, 870, RULE_systemObjectPermission);
45757 		int _la;
45758 		try {
45759 			enterOuterAlt(_localctx, 1);
45760 			{
45761 			setState(6380);
45762 			_la = _input.LA(1);
45763 			if ( !(_la==SELECT || _la==EXECUTE) ) {
45764 			_errHandler.recoverInline(this);
45765 			}
45766 			else {
45767 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45768 				_errHandler.reportMatch(this);
45769 				consume();
45770 			}
45771 			}
45772 		}
45773 		catch (RecognitionException re) {
45774 			_localctx.exception = re;
45775 			_errHandler.reportError(this, re);
45776 			_errHandler.recover(this, re);
45777 		}
45778 		finally {
45779 			exitRule();
45780 		}
45781 		return _localctx;
45782 	}
45783 
45784 	public static class Class_Context extends ParserRuleContext {
45785 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
45786 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
45787 		public TerminalNode COLON_(int i) {
45788 			return getToken(SQLServerStatementParser.COLON_, i);
45789 		}
45790 		public Class_Context(ParserRuleContext parent, int invokingState) {
45791 			super(parent, invokingState);
45792 		}
45793 		@Override public int getRuleIndex() { return RULE_class_; }
45794 		@Override
45795 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45796 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClass_(this);
45797 			else return visitor.visitChildren(this);
45798 		}
45799 	}
45800 
45801 	public final Class_Context class_() throws RecognitionException {
45802 		Class_Context _localctx = new Class_Context(_ctx, getState());
45803 		enterRule(_localctx, 872, RULE_class_);
45804 		try {
45805 			enterOuterAlt(_localctx, 1);
45806 			{
45807 			setState(6382);
45808 			match(IDENTIFIER_);
45809 			setState(6383);
45810 			match(COLON_);
45811 			setState(6384);
45812 			match(COLON_);
45813 			}
45814 		}
45815 		catch (RecognitionException re) {
45816 			_localctx.exception = re;
45817 			_errHandler.reportError(this, re);
45818 			_errHandler.recover(this, re);
45819 		}
45820 		finally {
45821 			exitRule();
45822 		}
45823 		return _localctx;
45824 	}
45825 
45826 	public static class ClassItemContext extends ParserRuleContext {
45827 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
45828 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
45829 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
45830 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
45831 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
45832 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
45833 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
45834 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45835 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
45836 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
45837 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
45838 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
45839 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
45840 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
45841 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
45842 		public TerminalNode STOPLIST() { return getToken(SQLServerStatementParser.STOPLIST, 0); }
45843 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
45844 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
45845 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
45846 		public TerminalNode PROPERTY() { return getToken(SQLServerStatementParser.PROPERTY, 0); }
45847 		public TerminalNode LIST() { return getToken(SQLServerStatementParser.LIST, 0); }
45848 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
45849 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
45850 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
45851 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
45852 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
45853 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
45854 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
45855 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
45856 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
45857 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
45858 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
45859 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45860 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
45861 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
45862 		public ClassItemContext(ParserRuleContext parent, int invokingState) {
45863 			super(parent, invokingState);
45864 		}
45865 		@Override public int getRuleIndex() { return RULE_classItem; }
45866 		@Override
45867 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45868 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassItem(this);
45869 			else return visitor.visitChildren(this);
45870 		}
45871 	}
45872 
45873 	public final ClassItemContext classItem() throws RecognitionException {
45874 		ClassItemContext _localctx = new ClassItemContext(_ctx, getState());
45875 		enterRule(_localctx, 874, RULE_classItem);
45876 		int _la;
45877 		try {
45878 			setState(6426);
45879 			_errHandler.sync(this);
45880 			switch (_input.LA(1)) {
45881 			case ASSEMBLY:
45882 				enterOuterAlt(_localctx, 1);
45883 				{
45884 				setState(6386);
45885 				match(ASSEMBLY);
45886 				}
45887 				break;
45888 			case ASYMMETRIC:
45889 				enterOuterAlt(_localctx, 2);
45890 				{
45891 				setState(6387);
45892 				match(ASYMMETRIC);
45893 				setState(6388);
45894 				match(KEY);
45895 				}
45896 				break;
45897 			case AVAILABILITY:
45898 				enterOuterAlt(_localctx, 3);
45899 				{
45900 				setState(6389);
45901 				match(AVAILABILITY);
45902 				setState(6390);
45903 				match(GROUP);
45904 				}
45905 				break;
45906 			case CERTIFICATE:
45907 				enterOuterAlt(_localctx, 4);
45908 				{
45909 				setState(6391);
45910 				match(CERTIFICATE);
45911 				}
45912 				break;
45913 			case USER:
45914 				enterOuterAlt(_localctx, 5);
45915 				{
45916 				setState(6392);
45917 				match(USER);
45918 				}
45919 				break;
45920 			case ROLE:
45921 				enterOuterAlt(_localctx, 6);
45922 				{
45923 				setState(6393);
45924 				match(ROLE);
45925 				}
45926 				break;
45927 			case APPLICATION:
45928 				enterOuterAlt(_localctx, 7);
45929 				{
45930 				setState(6394);
45931 				match(APPLICATION);
45932 				setState(6395);
45933 				match(ROLE);
45934 				}
45935 				break;
45936 			case DATABASE:
45937 				enterOuterAlt(_localctx, 8);
45938 				{
45939 				setState(6396);
45940 				match(DATABASE);
45941 				setState(6397);
45942 				match(SCOPED);
45943 				setState(6398);
45944 				match(CREDENTIAL);
45945 				}
45946 				break;
45947 			case ENDPOINT:
45948 				enterOuterAlt(_localctx, 9);
45949 				{
45950 				setState(6399);
45951 				match(ENDPOINT);
45952 				}
45953 				break;
45954 			case FULLTEXT:
45955 				enterOuterAlt(_localctx, 10);
45956 				{
45957 				setState(6400);
45958 				match(FULLTEXT);
45959 				setState(6401);
45960 				_la = _input.LA(1);
45961 				if ( !(_la==CATALOG || _la==STOPLIST) ) {
45962 				_errHandler.recoverInline(this);
45963 				}
45964 				else {
45965 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45966 					_errHandler.reportMatch(this);
45967 					consume();
45968 				}
45969 				}
45970 				break;
45971 			case OBJECT:
45972 				enterOuterAlt(_localctx, 11);
45973 				{
45974 				setState(6402);
45975 				match(OBJECT);
45976 				}
45977 				break;
45978 			case SCHEMA:
45979 				enterOuterAlt(_localctx, 12);
45980 				{
45981 				setState(6403);
45982 				match(SCHEMA);
45983 				}
45984 				break;
45985 			case SEARCH:
45986 				enterOuterAlt(_localctx, 13);
45987 				{
45988 				setState(6404);
45989 				match(SEARCH);
45990 				setState(6405);
45991 				match(PROPERTY);
45992 				setState(6406);
45993 				match(LIST);
45994 				}
45995 				break;
45996 			case LOGIN:
45997 				enterOuterAlt(_localctx, 14);
45998 				{
45999 				setState(6407);
46000 				match(LOGIN);
46001 				}
46002 				break;
46003 			case SERVER:
46004 				enterOuterAlt(_localctx, 15);
46005 				{
46006 				setState(6408);
46007 				match(SERVER);
46008 				setState(6409);
46009 				match(ROLE);
46010 				}
46011 				break;
46012 			case CONTRACT:
46013 				enterOuterAlt(_localctx, 16);
46014 				{
46015 				setState(6410);
46016 				match(CONTRACT);
46017 				}
46018 				break;
46019 			case MESSAGE:
46020 				enterOuterAlt(_localctx, 17);
46021 				{
46022 				setState(6411);
46023 				match(MESSAGE);
46024 				setState(6412);
46025 				match(TYPE);
46026 				}
46027 				break;
46028 			case REMOTE:
46029 				enterOuterAlt(_localctx, 18);
46030 				{
46031 				setState(6413);
46032 				match(REMOTE);
46033 				setState(6414);
46034 				match(SERVICE);
46035 				setState(6415);
46036 				match(BINDING);
46037 				}
46038 				break;
46039 			case ROUTE:
46040 				enterOuterAlt(_localctx, 19);
46041 				{
46042 				setState(6416);
46043 				match(ROUTE);
46044 				}
46045 				break;
46046 			case SERVICE:
46047 				enterOuterAlt(_localctx, 20);
46048 				{
46049 				setState(6417);
46050 				match(SERVICE);
46051 				}
46052 				break;
46053 			case SYMMETRIC:
46054 				enterOuterAlt(_localctx, 21);
46055 				{
46056 				setState(6418);
46057 				match(SYMMETRIC);
46058 				setState(6419);
46059 				match(KEY);
46060 				}
46061 				break;
46062 			case SELECT:
46063 				enterOuterAlt(_localctx, 22);
46064 				{
46065 				setState(6420);
46066 				match(SELECT);
46067 				}
46068 				break;
46069 			case EXECUTE:
46070 				enterOuterAlt(_localctx, 23);
46071 				{
46072 				setState(6421);
46073 				match(EXECUTE);
46074 				}
46075 				break;
46076 			case TYPE:
46077 				enterOuterAlt(_localctx, 24);
46078 				{
46079 				setState(6422);
46080 				match(TYPE);
46081 				}
46082 				break;
46083 			case XML:
46084 				enterOuterAlt(_localctx, 25);
46085 				{
46086 				setState(6423);
46087 				match(XML);
46088 				setState(6424);
46089 				match(SCHEMA);
46090 				setState(6425);
46091 				match(COLLECTION);
46092 				}
46093 				break;
46094 			default:
46095 				throw new NoViableAltException(this);
46096 			}
46097 		}
46098 		catch (RecognitionException re) {
46099 			_localctx.exception = re;
46100 			_errHandler.reportError(this, re);
46101 			_errHandler.recover(this, re);
46102 		}
46103 		finally {
46104 			exitRule();
46105 		}
46106 		return _localctx;
46107 	}
46108 
46109 	public static class ClassTypeContext extends ParserRuleContext {
46110 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46111 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
46112 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
46113 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
46114 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
46115 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
46116 		public ClassTypeContext(ParserRuleContext parent, int invokingState) {
46117 			super(parent, invokingState);
46118 		}
46119 		@Override public int getRuleIndex() { return RULE_classType; }
46120 		@Override
46121 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46122 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassType(this);
46123 			else return visitor.visitChildren(this);
46124 		}
46125 	}
46126 
46127 	public final ClassTypeContext classType() throws RecognitionException {
46128 		ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
46129 		enterRule(_localctx, 876, RULE_classType);
46130 		int _la;
46131 		try {
46132 			enterOuterAlt(_localctx, 1);
46133 			{
46134 			setState(6428);
46135 			_la = _input.LA(1);
46136 			if ( !(_la==SCHEMA || ((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (DATABASE - 204)) | (1L << (USER - 204)) | (1L << (ROLE - 204)))) != 0) || _la==LOGIN || _la==OBJECT) ) {
46137 			_errHandler.recoverInline(this);
46138 			}
46139 			else {
46140 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46141 				_errHandler.reportMatch(this);
46142 				consume();
46143 			}
46144 			}
46145 		}
46146 		catch (RecognitionException re) {
46147 			_localctx.exception = re;
46148 			_errHandler.reportError(this, re);
46149 			_errHandler.recover(this, re);
46150 		}
46151 		finally {
46152 			exitRule();
46153 		}
46154 		return _localctx;
46155 	}
46156 
46157 	public static class RoleClauseContext extends ParserRuleContext {
46158 		public IgnoredIdentifiersContext ignoredIdentifiers() {
46159 			return getRuleContext(IgnoredIdentifiersContext.class,0);
46160 		}
46161 		public RoleClauseContext(ParserRuleContext parent, int invokingState) {
46162 			super(parent, invokingState);
46163 		}
46164 		@Override public int getRuleIndex() { return RULE_roleClause; }
46165 		@Override
46166 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46167 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRoleClause(this);
46168 			else return visitor.visitChildren(this);
46169 		}
46170 	}
46171 
46172 	public final RoleClauseContext roleClause() throws RecognitionException {
46173 		RoleClauseContext _localctx = new RoleClauseContext(_ctx, getState());
46174 		enterRule(_localctx, 878, RULE_roleClause);
46175 		try {
46176 			enterOuterAlt(_localctx, 1);
46177 			{
46178 			setState(6430);
46179 			ignoredIdentifiers();
46180 			}
46181 		}
46182 		catch (RecognitionException re) {
46183 			_localctx.exception = re;
46184 			_errHandler.reportError(this, re);
46185 			_errHandler.recover(this, re);
46186 		}
46187 		finally {
46188 			exitRule();
46189 		}
46190 		return _localctx;
46191 	}
46192 
46193 	public static class SetUserContext extends ParserRuleContext {
46194 		public TerminalNode SETUSER() { return getToken(SQLServerStatementParser.SETUSER, 0); }
46195 		public StringLiteralsContext stringLiterals() {
46196 			return getRuleContext(StringLiteralsContext.class,0);
46197 		}
46198 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46199 		public TerminalNode NORESET() { return getToken(SQLServerStatementParser.NORESET, 0); }
46200 		public SetUserContext(ParserRuleContext parent, int invokingState) {
46201 			super(parent, invokingState);
46202 		}
46203 		@Override public int getRuleIndex() { return RULE_setUser; }
46204 		@Override
46205 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46206 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetUser(this);
46207 			else return visitor.visitChildren(this);
46208 		}
46209 	}
46210 
46211 	public final SetUserContext setUser() throws RecognitionException {
46212 		SetUserContext _localctx = new SetUserContext(_ctx, getState());
46213 		enterRule(_localctx, 880, RULE_setUser);
46214 		int _la;
46215 		try {
46216 			enterOuterAlt(_localctx, 1);
46217 			{
46218 			setState(6432);
46219 			match(SETUSER);
46220 			setState(6438);
46221 			_errHandler.sync(this);
46222 			_la = _input.LA(1);
46223 			if (_la==STRING_ || _la==NCHAR_TEXT) {
46224 				{
46225 				setState(6433);
46226 				stringLiterals();
46227 				setState(6436);
46228 				_errHandler.sync(this);
46229 				_la = _input.LA(1);
46230 				if (_la==WITH) {
46231 					{
46232 					setState(6434);
46233 					match(WITH);
46234 					setState(6435);
46235 					match(NORESET);
46236 					}
46237 				}
46238 
46239 				}
46240 			}
46241 
46242 			}
46243 		}
46244 		catch (RecognitionException re) {
46245 			_localctx.exception = re;
46246 			_errHandler.reportError(this, re);
46247 			_errHandler.recover(this, re);
46248 		}
46249 		finally {
46250 			exitRule();
46251 		}
46252 		return _localctx;
46253 	}
46254 
46255 	public static class CreateUserContext extends ParserRuleContext {
46256 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
46257 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
46258 		public CreateUserLoginClauseContext createUserLoginClause() {
46259 			return getRuleContext(CreateUserLoginClauseContext.class,0);
46260 		}
46261 		public CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() {
46262 			return getRuleContext(CreateUserWindowsPrincipalClauseContext.class,0);
46263 		}
46264 		public CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() {
46265 			return getRuleContext(CreateUserLoginWindowsPrincipalClauseContext.class,0);
46266 		}
46267 		public CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() {
46268 			return getRuleContext(CreateUserWithoutLoginClauseContext.class,0);
46269 		}
46270 		public CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() {
46271 			return getRuleContext(CreateUserFromExternalProviderClauseContext.class,0);
46272 		}
46273 		public CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() {
46274 			return getRuleContext(CreateUserWithDefaultSchemaContext.class,0);
46275 		}
46276 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() {
46277 			return getRuleContext(CreateUserWithAzureActiveDirectoryPrincipalClauseContext.class,0);
46278 		}
46279 		public UserNameContext userName() {
46280 			return getRuleContext(UserNameContext.class,0);
46281 		}
46282 		public CreateUserContext(ParserRuleContext parent, int invokingState) {
46283 			super(parent, invokingState);
46284 		}
46285 		@Override public int getRuleIndex() { return RULE_createUser; }
46286 		@Override
46287 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46288 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUser(this);
46289 			else return visitor.visitChildren(this);
46290 		}
46291 	}
46292 
46293 	public final CreateUserContext createUser() throws RecognitionException {
46294 		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
46295 		enterRule(_localctx, 882, RULE_createUser);
46296 		try {
46297 			enterOuterAlt(_localctx, 1);
46298 			{
46299 			setState(6440);
46300 			match(CREATE);
46301 			setState(6441);
46302 			match(USER);
46303 			setState(6450);
46304 			_errHandler.sync(this);
46305 			switch ( getInterpreter().adaptivePredict(_input,739,_ctx) ) {
46306 			case 1:
46307 				{
46308 				setState(6442);
46309 				createUserLoginClause();
46310 				}
46311 				break;
46312 			case 2:
46313 				{
46314 				setState(6443);
46315 				createUserWindowsPrincipalClause();
46316 				}
46317 				break;
46318 			case 3:
46319 				{
46320 				setState(6444);
46321 				createUserLoginWindowsPrincipalClause();
46322 				}
46323 				break;
46324 			case 4:
46325 				{
46326 				setState(6445);
46327 				createUserWithoutLoginClause();
46328 				}
46329 				break;
46330 			case 5:
46331 				{
46332 				setState(6446);
46333 				createUserFromExternalProviderClause();
46334 				}
46335 				break;
46336 			case 6:
46337 				{
46338 				setState(6447);
46339 				createUserWithDefaultSchema();
46340 				}
46341 				break;
46342 			case 7:
46343 				{
46344 				setState(6448);
46345 				createUserWithAzureActiveDirectoryPrincipalClause();
46346 				}
46347 				break;
46348 			case 8:
46349 				{
46350 				setState(6449);
46351 				userName();
46352 				}
46353 				break;
46354 			}
46355 			}
46356 		}
46357 		catch (RecognitionException re) {
46358 			_localctx.exception = re;
46359 			_errHandler.reportError(this, re);
46360 			_errHandler.recover(this, re);
46361 		}
46362 		finally {
46363 			exitRule();
46364 		}
46365 		return _localctx;
46366 	}
46367 
46368 	public static class CreateUserLoginClauseContext extends ParserRuleContext {
46369 		public UserNameContext userName() {
46370 			return getRuleContext(UserNameContext.class,0);
46371 		}
46372 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46373 		public IdentifierContext identifier() {
46374 			return getRuleContext(IdentifierContext.class,0);
46375 		}
46376 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46377 		public List<LimitedOptionsListContext> limitedOptionsList() {
46378 			return getRuleContexts(LimitedOptionsListContext.class);
46379 		}
46380 		public LimitedOptionsListContext limitedOptionsList(int i) {
46381 			return getRuleContext(LimitedOptionsListContext.class,i);
46382 		}
46383 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
46384 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
46385 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
46386 		public TerminalNode COMMA_(int i) {
46387 			return getToken(SQLServerStatementParser.COMMA_, i);
46388 		}
46389 		public CreateUserLoginClauseContext(ParserRuleContext parent, int invokingState) {
46390 			super(parent, invokingState);
46391 		}
46392 		@Override public int getRuleIndex() { return RULE_createUserLoginClause; }
46393 		@Override
46394 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46395 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginClause(this);
46396 			else return visitor.visitChildren(this);
46397 		}
46398 	}
46399 
46400 	public final CreateUserLoginClauseContext createUserLoginClause() throws RecognitionException {
46401 		CreateUserLoginClauseContext _localctx = new CreateUserLoginClauseContext(_ctx, getState());
46402 		enterRule(_localctx, 884, RULE_createUserLoginClause);
46403 		int _la;
46404 		try {
46405 			enterOuterAlt(_localctx, 1);
46406 			{
46407 			setState(6452);
46408 			userName();
46409 			setState(6456);
46410 			_errHandler.sync(this);
46411 			_la = _input.LA(1);
46412 			if (_la==FROM || _la==FOR) {
46413 				{
46414 				setState(6453);
46415 				_la = _input.LA(1);
46416 				if ( !(_la==FROM || _la==FOR) ) {
46417 				_errHandler.recoverInline(this);
46418 				}
46419 				else {
46420 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46421 					_errHandler.reportMatch(this);
46422 					consume();
46423 				}
46424 				setState(6454);
46425 				match(LOGIN);
46426 				setState(6455);
46427 				identifier();
46428 				}
46429 			}
46430 
46431 			setState(6467);
46432 			_errHandler.sync(this);
46433 			_la = _input.LA(1);
46434 			if (_la==WITH) {
46435 				{
46436 				setState(6458);
46437 				match(WITH);
46438 				setState(6459);
46439 				limitedOptionsList();
46440 				setState(6464);
46441 				_errHandler.sync(this);
46442 				_la = _input.LA(1);
46443 				while (_la==COMMA_) {
46444 					{
46445 					{
46446 					setState(6460);
46447 					match(COMMA_);
46448 					setState(6461);
46449 					limitedOptionsList();
46450 					}
46451 					}
46452 					setState(6466);
46453 					_errHandler.sync(this);
46454 					_la = _input.LA(1);
46455 				}
46456 				}
46457 			}
46458 
46459 			}
46460 		}
46461 		catch (RecognitionException re) {
46462 			_localctx.exception = re;
46463 			_errHandler.reportError(this, re);
46464 			_errHandler.recover(this, re);
46465 		}
46466 		finally {
46467 			exitRule();
46468 		}
46469 		return _localctx;
46470 	}
46471 
46472 	public static class CreateUserWindowsPrincipalClauseContext extends ParserRuleContext {
46473 		public WindowsPrincipalContext windowsPrincipal() {
46474 			return getRuleContext(WindowsPrincipalContext.class,0);
46475 		}
46476 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46477 		public List<OptionsListContext> optionsList() {
46478 			return getRuleContexts(OptionsListContext.class);
46479 		}
46480 		public OptionsListContext optionsList(int i) {
46481 			return getRuleContext(OptionsListContext.class,i);
46482 		}
46483 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
46484 		public TerminalNode COMMA_(int i) {
46485 			return getToken(SQLServerStatementParser.COMMA_, i);
46486 		}
46487 		public UserNameContext userName() {
46488 			return getRuleContext(UserNameContext.class,0);
46489 		}
46490 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
46491 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
46492 		public StringLiteralsContext stringLiterals() {
46493 			return getRuleContext(StringLiteralsContext.class,0);
46494 		}
46495 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
46496 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
46497 		}
46498 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
46499 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
46500 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
46501 		public CreateUserWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
46502 			super(parent, invokingState);
46503 		}
46504 		@Override public int getRuleIndex() { return RULE_createUserWindowsPrincipalClause; }
46505 		@Override
46506 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46507 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWindowsPrincipalClause(this);
46508 			else return visitor.visitChildren(this);
46509 		}
46510 	}
46511 
46512 	public final CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() throws RecognitionException {
46513 		CreateUserWindowsPrincipalClauseContext _localctx = new CreateUserWindowsPrincipalClauseContext(_ctx, getState());
46514 		enterRule(_localctx, 886, RULE_createUserWindowsPrincipalClause);
46515 		int _la;
46516 		try {
46517 			setState(6502);
46518 			_errHandler.sync(this);
46519 			switch ( getInterpreter().adaptivePredict(_input,747,_ctx) ) {
46520 			case 1:
46521 				enterOuterAlt(_localctx, 1);
46522 				{
46523 				setState(6469);
46524 				windowsPrincipal();
46525 				setState(6479);
46526 				_errHandler.sync(this);
46527 				_la = _input.LA(1);
46528 				if (_la==WITH) {
46529 					{
46530 					setState(6470);
46531 					match(WITH);
46532 					setState(6471);
46533 					optionsList();
46534 					setState(6476);
46535 					_errHandler.sync(this);
46536 					_la = _input.LA(1);
46537 					while (_la==COMMA_) {
46538 						{
46539 						{
46540 						setState(6472);
46541 						match(COMMA_);
46542 						setState(6473);
46543 						optionsList();
46544 						}
46545 						}
46546 						setState(6478);
46547 						_errHandler.sync(this);
46548 						_la = _input.LA(1);
46549 					}
46550 					}
46551 				}
46552 
46553 				}
46554 				break;
46555 			case 2:
46556 				enterOuterAlt(_localctx, 2);
46557 				{
46558 				setState(6481);
46559 				userName();
46560 				setState(6482);
46561 				match(WITH);
46562 				setState(6483);
46563 				match(PASSWORD);
46564 				setState(6484);
46565 				match(EQ_);
46566 				setState(6485);
46567 				stringLiterals();
46568 				setState(6495);
46569 				_errHandler.sync(this);
46570 				_la = _input.LA(1);
46571 				if (_la==COMMA_) {
46572 					{
46573 					setState(6486);
46574 					match(COMMA_);
46575 					setState(6487);
46576 					optionsList();
46577 					setState(6492);
46578 					_errHandler.sync(this);
46579 					_la = _input.LA(1);
46580 					while (_la==COMMA_) {
46581 						{
46582 						{
46583 						setState(6488);
46584 						match(COMMA_);
46585 						setState(6489);
46586 						optionsList();
46587 						}
46588 						}
46589 						setState(6494);
46590 						_errHandler.sync(this);
46591 						_la = _input.LA(1);
46592 					}
46593 					}
46594 				}
46595 
46596 				}
46597 				break;
46598 			case 3:
46599 				enterOuterAlt(_localctx, 3);
46600 				{
46601 				setState(6497);
46602 				azureActiveDirectoryPrincipal();
46603 				setState(6498);
46604 				match(FROM);
46605 				setState(6499);
46606 				match(EXTERNAL);
46607 				setState(6500);
46608 				match(PROVIDER);
46609 				}
46610 				break;
46611 			}
46612 		}
46613 		catch (RecognitionException re) {
46614 			_localctx.exception = re;
46615 			_errHandler.reportError(this, re);
46616 			_errHandler.recover(this, re);
46617 		}
46618 		finally {
46619 			exitRule();
46620 		}
46621 		return _localctx;
46622 	}
46623 
46624 	public static class CreateUserLoginWindowsPrincipalClauseContext extends ParserRuleContext {
46625 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46626 		public List<LimitedOptionsListContext> limitedOptionsList() {
46627 			return getRuleContexts(LimitedOptionsListContext.class);
46628 		}
46629 		public LimitedOptionsListContext limitedOptionsList(int i) {
46630 			return getRuleContext(LimitedOptionsListContext.class,i);
46631 		}
46632 		public List<WindowsPrincipalContext> windowsPrincipal() {
46633 			return getRuleContexts(WindowsPrincipalContext.class);
46634 		}
46635 		public WindowsPrincipalContext windowsPrincipal(int i) {
46636 			return getRuleContext(WindowsPrincipalContext.class,i);
46637 		}
46638 		public UserNameContext userName() {
46639 			return getRuleContext(UserNameContext.class,0);
46640 		}
46641 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46642 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
46643 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
46644 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
46645 		public TerminalNode COMMA_(int i) {
46646 			return getToken(SQLServerStatementParser.COMMA_, i);
46647 		}
46648 		public CreateUserLoginWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
46649 			super(parent, invokingState);
46650 		}
46651 		@Override public int getRuleIndex() { return RULE_createUserLoginWindowsPrincipalClause; }
46652 		@Override
46653 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46654 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginWindowsPrincipalClause(this);
46655 			else return visitor.visitChildren(this);
46656 		}
46657 	}
46658 
46659 	public final CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() throws RecognitionException {
46660 		CreateUserLoginWindowsPrincipalClauseContext _localctx = new CreateUserLoginWindowsPrincipalClauseContext(_ctx, getState());
46661 		enterRule(_localctx, 888, RULE_createUserLoginWindowsPrincipalClause);
46662 		int _la;
46663 		try {
46664 			enterOuterAlt(_localctx, 1);
46665 			{
46666 			setState(6515);
46667 			_errHandler.sync(this);
46668 			switch ( getInterpreter().adaptivePredict(_input,749,_ctx) ) {
46669 			case 1:
46670 				{
46671 				{
46672 				setState(6504);
46673 				windowsPrincipal();
46674 				setState(6508);
46675 				_errHandler.sync(this);
46676 				_la = _input.LA(1);
46677 				if (_la==FROM || _la==FOR) {
46678 					{
46679 					setState(6505);
46680 					_la = _input.LA(1);
46681 					if ( !(_la==FROM || _la==FOR) ) {
46682 					_errHandler.recoverInline(this);
46683 					}
46684 					else {
46685 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46686 						_errHandler.reportMatch(this);
46687 						consume();
46688 					}
46689 					setState(6506);
46690 					match(LOGIN);
46691 					setState(6507);
46692 					windowsPrincipal();
46693 					}
46694 				}
46695 
46696 				}
46697 				}
46698 				break;
46699 			case 2:
46700 				{
46701 				{
46702 				setState(6510);
46703 				userName();
46704 				setState(6511);
46705 				_la = _input.LA(1);
46706 				if ( !(_la==FROM || _la==FOR) ) {
46707 				_errHandler.recoverInline(this);
46708 				}
46709 				else {
46710 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46711 					_errHandler.reportMatch(this);
46712 					consume();
46713 				}
46714 				setState(6512);
46715 				match(LOGIN);
46716 				setState(6513);
46717 				windowsPrincipal();
46718 				}
46719 				}
46720 				break;
46721 			}
46722 			setState(6526);
46723 			_errHandler.sync(this);
46724 			_la = _input.LA(1);
46725 			if (_la==WITH) {
46726 				{
46727 				setState(6517);
46728 				match(WITH);
46729 				setState(6518);
46730 				limitedOptionsList();
46731 				setState(6523);
46732 				_errHandler.sync(this);
46733 				_la = _input.LA(1);
46734 				while (_la==COMMA_) {
46735 					{
46736 					{
46737 					setState(6519);
46738 					match(COMMA_);
46739 					setState(6520);
46740 					limitedOptionsList();
46741 					}
46742 					}
46743 					setState(6525);
46744 					_errHandler.sync(this);
46745 					_la = _input.LA(1);
46746 				}
46747 				}
46748 			}
46749 
46750 			}
46751 		}
46752 		catch (RecognitionException re) {
46753 			_localctx.exception = re;
46754 			_errHandler.reportError(this, re);
46755 			_errHandler.recover(this, re);
46756 		}
46757 		finally {
46758 			exitRule();
46759 		}
46760 		return _localctx;
46761 	}
46762 
46763 	public static class CreateUserWithoutLoginClauseContext extends ParserRuleContext {
46764 		public UserNameContext userName() {
46765 			return getRuleContext(UserNameContext.class,0);
46766 		}
46767 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
46768 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46769 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
46770 		public IdentifierContext identifier() {
46771 			return getRuleContext(IdentifierContext.class,0);
46772 		}
46773 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
46774 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46775 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
46776 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
46777 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46778 		public List<LimitedOptionsListContext> limitedOptionsList() {
46779 			return getRuleContexts(LimitedOptionsListContext.class);
46780 		}
46781 		public LimitedOptionsListContext limitedOptionsList(int i) {
46782 			return getRuleContext(LimitedOptionsListContext.class,i);
46783 		}
46784 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
46785 		public TerminalNode COMMA_(int i) {
46786 			return getToken(SQLServerStatementParser.COMMA_, i);
46787 		}
46788 		public CreateUserWithoutLoginClauseContext(ParserRuleContext parent, int invokingState) {
46789 			super(parent, invokingState);
46790 		}
46791 		@Override public int getRuleIndex() { return RULE_createUserWithoutLoginClause; }
46792 		@Override
46793 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46794 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithoutLoginClause(this);
46795 			else return visitor.visitChildren(this);
46796 		}
46797 	}
46798 
46799 	public final CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() throws RecognitionException {
46800 		CreateUserWithoutLoginClauseContext _localctx = new CreateUserWithoutLoginClauseContext(_ctx, getState());
46801 		enterRule(_localctx, 890, RULE_createUserWithoutLoginClause);
46802 		int _la;
46803 		try {
46804 			enterOuterAlt(_localctx, 1);
46805 			{
46806 			setState(6528);
46807 			userName();
46808 			setState(6549);
46809 			_errHandler.sync(this);
46810 			switch ( getInterpreter().adaptivePredict(_input,754,_ctx) ) {
46811 			case 1:
46812 				{
46813 				setState(6529);
46814 				match(WITHOUT);
46815 				setState(6530);
46816 				match(LOGIN);
46817 				setState(6540);
46818 				_errHandler.sync(this);
46819 				_la = _input.LA(1);
46820 				if (_la==WITH) {
46821 					{
46822 					setState(6531);
46823 					match(WITH);
46824 					setState(6532);
46825 					limitedOptionsList();
46826 					setState(6537);
46827 					_errHandler.sync(this);
46828 					_la = _input.LA(1);
46829 					while (_la==COMMA_) {
46830 						{
46831 						{
46832 						setState(6533);
46833 						match(COMMA_);
46834 						setState(6534);
46835 						limitedOptionsList();
46836 						}
46837 						}
46838 						setState(6539);
46839 						_errHandler.sync(this);
46840 						_la = _input.LA(1);
46841 					}
46842 					}
46843 				}
46844 
46845 				}
46846 				break;
46847 			case 2:
46848 				{
46849 				setState(6542);
46850 				_la = _input.LA(1);
46851 				if ( !(_la==FROM || _la==FOR) ) {
46852 				_errHandler.recoverInline(this);
46853 				}
46854 				else {
46855 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46856 					_errHandler.reportMatch(this);
46857 					consume();
46858 				}
46859 				setState(6543);
46860 				match(CERTIFICATE);
46861 				setState(6544);
46862 				identifier();
46863 				}
46864 				break;
46865 			case 3:
46866 				{
46867 				setState(6545);
46868 				_la = _input.LA(1);
46869 				if ( !(_la==FROM || _la==FOR) ) {
46870 				_errHandler.recoverInline(this);
46871 				}
46872 				else {
46873 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46874 					_errHandler.reportMatch(this);
46875 					consume();
46876 				}
46877 				setState(6546);
46878 				match(ASYMMETRIC);
46879 				setState(6547);
46880 				match(KEY);
46881 				setState(6548);
46882 				identifier();
46883 				}
46884 				break;
46885 			}
46886 			}
46887 		}
46888 		catch (RecognitionException re) {
46889 			_localctx.exception = re;
46890 			_errHandler.reportError(this, re);
46891 			_errHandler.recover(this, re);
46892 		}
46893 		finally {
46894 			exitRule();
46895 		}
46896 		return _localctx;
46897 	}
46898 
46899 	public static class OptionsListContext extends ParserRuleContext {
46900 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
46901 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
46902 		public SchemaNameContext schemaName() {
46903 			return getRuleContext(SchemaNameContext.class,0);
46904 		}
46905 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
46906 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
46907 		public IdentifierContext identifier() {
46908 			return getRuleContext(IdentifierContext.class,0);
46909 		}
46910 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
46911 		public SidContext sid() {
46912 			return getRuleContext(SidContext.class,0);
46913 		}
46914 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
46915 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
46916 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
46917 		public OptionsListContext(ParserRuleContext parent, int invokingState) {
46918 			super(parent, invokingState);
46919 		}
46920 		@Override public int getRuleIndex() { return RULE_optionsList; }
46921 		@Override
46922 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46923 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionsList(this);
46924 			else return visitor.visitChildren(this);
46925 		}
46926 	}
46927 
46928 	public final OptionsListContext optionsList() throws RecognitionException {
46929 		OptionsListContext _localctx = new OptionsListContext(_ctx, getState());
46930 		enterRule(_localctx, 892, RULE_optionsList);
46931 		int _la;
46932 		try {
46933 			setState(6568);
46934 			_errHandler.sync(this);
46935 			switch (_input.LA(1)) {
46936 			case DEFAULT_SCHEMA:
46937 				enterOuterAlt(_localctx, 1);
46938 				{
46939 				setState(6551);
46940 				match(DEFAULT_SCHEMA);
46941 				setState(6552);
46942 				match(EQ_);
46943 				setState(6553);
46944 				schemaName();
46945 				}
46946 				break;
46947 			case DEFAULT_LANGUAGE:
46948 				enterOuterAlt(_localctx, 2);
46949 				{
46950 				setState(6554);
46951 				match(DEFAULT_LANGUAGE);
46952 				setState(6555);
46953 				match(EQ_);
46954 				setState(6558);
46955 				_errHandler.sync(this);
46956 				switch (_input.LA(1)) {
46957 				case NONE:
46958 					{
46959 					setState(6556);
46960 					match(NONE);
46961 					}
46962 					break;
46963 				case TRUNCATE:
46964 				case SCHEMA:
46965 				case COLUMNS:
46966 				case PRECISION:
46967 				case FUNCTION:
46968 				case TRIGGER:
46969 				case CAST:
46970 				case SUBSTRING:
46971 				case OFF:
46972 				case GROUP:
46973 				case LIMIT:
46974 				case OFFSET:
46975 				case SAVEPOINT:
46976 				case BOOLEAN:
46977 				case ARRAY:
46978 				case DATE:
46979 				case LOCALTIME:
46980 				case LOCALTIMESTAMP:
46981 				case QUARTER:
46982 				case WEEK:
46983 				case DAY:
46984 				case SECOND:
46985 				case MICROSECOND:
46986 				case MAX:
46987 				case MIN:
46988 				case SUM:
46989 				case COUNT:
46990 				case AVG:
46991 				case ENABLE:
46992 				case DISABLE:
46993 				case INSTANCE:
46994 				case DO:
46995 				case DEFINER:
46996 				case SQL:
46997 				case CASCADED:
46998 				case LOCAL:
46999 				case NEXT:
47000 				case NAME:
47001 				case INTEGER:
47002 				case TYPE:
47003 				case TEXT:
47004 				case VIEWS:
47005 				case READ_ONLY:
47006 				case DATABASE:
47007 				case RETURNS:
47008 				case DATEPART:
47009 				case PASSWORD:
47010 				case BINARY:
47011 				case HIDDEN_:
47012 				case MOD:
47013 				case PARTITION:
47014 				case PARTITIONS:
47015 				case TOP:
47016 				case ROW:
47017 				case ROWS:
47018 				case XOR:
47019 				case ALWAYS:
47020 				case ROLE:
47021 				case START:
47022 				case ALGORITHM:
47023 				case AUTO:
47024 				case BLOCKERS:
47025 				case CLUSTERED:
47026 				case NONCLUSTERED:
47027 				case COLUMNSTORE:
47028 				case CONTENT:
47029 				case YEARS:
47030 				case MONTHS:
47031 				case WEEKS:
47032 				case DAYS:
47033 				case MINUTES:
47034 				case DENY:
47035 				case DETERMINISTIC:
47036 				case DISTRIBUTION:
47037 				case DOCUMENT:
47038 				case DURABILITY:
47039 				case ENCRYPTED:
47040 				case FILESTREAM:
47041 				case FILETABLE:
47042 				case FILLFACTOR:
47043 				case FOLLOWING:
47044 				case HASH:
47045 				case HEAP:
47046 				case INBOUND:
47047 				case OUTBOUND:
47048 				case UNBOUNDED:
47049 				case INFINITE:
47050 				case LOGIN:
47051 				case MASKED:
47052 				case MAXDOP:
47053 				case MOVE:
47054 				case NOCHECK:
47055 				case OBJECT:
47056 				case ONLINE:
47057 				case OVER:
47058 				case PAGE:
47059 				case PAUSED:
47060 				case PERIOD:
47061 				case PERSISTED:
47062 				case PRECEDING:
47063 				case RANDOMIZED:
47064 				case RANGE:
47065 				case REBUILD:
47066 				case REPLICATE:
47067 				case REPLICATION:
47068 				case RESUMABLE:
47069 				case ROWGUIDCOL:
47070 				case SAVE:
47071 				case SELF:
47072 				case SPARSE:
47073 				case SWITCH:
47074 				case TRAN:
47075 				case TRANCOUNT:
47076 				case CONTROL:
47077 				case CONCAT:
47078 				case TAKE:
47079 				case OWNERSHIP:
47080 				case DEFINITION:
47081 				case APPLICATION:
47082 				case ASSEMBLY:
47083 				case SYMMETRIC:
47084 				case ASYMMETRIC:
47085 				case SERVER:
47086 				case RECEIVE:
47087 				case CHANGE:
47088 				case TRACE:
47089 				case TRACKING:
47090 				case RESOURCES:
47091 				case SETTINGS:
47092 				case STATE:
47093 				case AVAILABILITY:
47094 				case CREDENTIAL:
47095 				case ENDPOINT:
47096 				case EVENT:
47097 				case NOTIFICATION:
47098 				case LINKED:
47099 				case AUDIT:
47100 				case DDL:
47101 				case XML:
47102 				case IMPERSONATE:
47103 				case SECURABLES:
47104 				case AUTHENTICATE:
47105 				case EXTERNAL:
47106 				case ACCESS:
47107 				case ADMINISTER:
47108 				case BULK:
47109 				case OPERATIONS:
47110 				case UNSAFE:
47111 				case SHUTDOWN:
47112 				case SCOPED:
47113 				case CONFIGURATION:
47114 				case DATASPACE:
47115 				case SERVICE:
47116 				case CERTIFICATE:
47117 				case CONTRACT:
47118 				case ENCRYPTION:
47119 				case MASTER:
47120 				case DATA:
47121 				case SOURCE:
47122 				case FILE:
47123 				case FORMAT:
47124 				case LIBRARY:
47125 				case FULLTEXT:
47126 				case MASK:
47127 				case UNMASK:
47128 				case MESSAGE:
47129 				case REMOTE:
47130 				case BINDING:
47131 				case ROUTE:
47132 				case SECURITY:
47133 				case POLICY:
47134 				case AGGREGATE:
47135 				case QUEUE:
47136 				case RULE:
47137 				case SYNONYM:
47138 				case COLLECTION:
47139 				case SCRIPT:
47140 				case KILL:
47141 				case BACKUP:
47142 				case LOG:
47143 				case SHOWPLAN:
47144 				case SUBSCRIBE:
47145 				case QUERY:
47146 				case NOTIFICATIONS:
47147 				case CHECKPOINT:
47148 				case SEQUENCE:
47149 				case ABORT_AFTER_WAIT:
47150 				case ALLOW_PAGE_LOCKS:
47151 				case ALLOW_ROW_LOCKS:
47152 				case ALL_SPARSE_COLUMNS:
47153 				case BUCKET_COUNT:
47154 				case COLUMNSTORE_ARCHIVE:
47155 				case COLUMN_ENCRYPTION_KEY:
47156 				case COLUMN_SET:
47157 				case COMPRESSION_DELAY:
47158 				case DATABASE_DEAULT:
47159 				case DATA_COMPRESSION:
47160 				case DATA_CONSISTENCY_CHECK:
47161 				case ENCRYPTION_TYPE:
47162 				case SYSTEM_TIME:
47163 				case SYSTEM_VERSIONING:
47164 				case TEXTIMAGE_ON:
47165 				case WAIT_AT_LOW_PRIORITY:
47166 				case STATISTICS_INCREMENTAL:
47167 				case STATISTICS_NORECOMPUTE:
47168 				case ROUND_ROBIN:
47169 				case SCHEMA_AND_DATA:
47170 				case SCHEMA_ONLY:
47171 				case SORT_IN_TEMPDB:
47172 				case IGNORE_DUP_KEY:
47173 				case IMPLICIT_TRANSACTIONS:
47174 				case MAX_DURATION:
47175 				case MEMORY_OPTIMIZED:
47176 				case MIGRATION_STATE:
47177 				case PAD_INDEX:
47178 				case REMOTE_DATA_ARCHIVE:
47179 				case FILESTREAM_ON:
47180 				case FILETABLE_COLLATE_FILENAME:
47181 				case FILETABLE_DIRECTORY:
47182 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
47183 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
47184 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
47185 				case FILTER_PREDICATE:
47186 				case HISTORY_RETENTION_PERIOD:
47187 				case HISTORY_TABLE:
47188 				case LOCK_ESCALATION:
47189 				case DROP_EXISTING:
47190 				case ROW_NUMBER:
47191 				case FIRST:
47192 				case DATETIME2:
47193 				case OUTPUT:
47194 				case INSERTED:
47195 				case DELETED:
47196 				case FILENAME:
47197 				case MAXSIZE:
47198 				case FILEGROWTH:
47199 				case UNLIMITED:
47200 				case KB:
47201 				case MB:
47202 				case GB:
47203 				case TB:
47204 				case MEMORY_OPTIMIZED_DATA:
47205 				case FILEGROUP:
47206 				case NON_TRANSACTED_ACCESS:
47207 				case DB_CHAINING:
47208 				case TRUSTWORTHY:
47209 				case FORWARD_ONLY:
47210 				case KEYSET:
47211 				case FAST_FORWARD:
47212 				case SCROLL_LOCKS:
47213 				case OPTIMISTIC:
47214 				case TYPE_WARNING:
47215 				case SCHEMABINDING:
47216 				case CALLER:
47217 				case OWNER:
47218 				case SNAPSHOT:
47219 				case REPEATABLE:
47220 				case SERIALIZABLE:
47221 				case NATIVE_COMPILATION:
47222 				case VIEW_METADATA:
47223 				case INSTEAD:
47224 				case APPEND:
47225 				case INCREMENT:
47226 				case CACHE:
47227 				case MINVALUE:
47228 				case MAXVALUE:
47229 				case RESTART:
47230 				case LOB_COMPACTION:
47231 				case COMPRESS_ALL_ROW_GROUPS:
47232 				case REORGANIZE:
47233 				case RESUME:
47234 				case PAUSE:
47235 				case ABORT:
47236 				case ACCELERATED_DATABASE_RECOVERY:
47237 				case PERSISTENT_VERSION_STORE_FILEGROUP:
47238 				case IMMEDIATE:
47239 				case NO_WAIT:
47240 				case TARGET_RECOVERY_TIME:
47241 				case SECONDS:
47242 				case HONOR_BROKER_PRIORITY:
47243 				case ERROR_BROKER_CONVERSATIONS:
47244 				case NEW_BROKER:
47245 				case DISABLE_BROKER:
47246 				case ENABLE_BROKER:
47247 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
47248 				case READ_COMMITTED_SNAPSHOT:
47249 				case ALLOW_SNAPSHOT_ISOLATION:
47250 				case RECURSIVE_TRIGGERS:
47251 				case QUOTED_IDENTIFIER:
47252 				case NUMERIC_ROUNDABORT:
47253 				case CONCAT_NULL_YIELDS_NULL:
47254 				case COMPATIBILITY_LEVEL:
47255 				case ARITHABORT:
47256 				case ANSI_WARNINGS:
47257 				case ANSI_PADDING:
47258 				case ANSI_NULLS:
47259 				case ANSI_NULL_DEFAULT:
47260 				case PAGE_VERIFY:
47261 				case CHECKSUM:
47262 				case TORN_PAGE_DETECTION:
47263 				case BULK_LOGGED:
47264 				case RECOVERY:
47265 				case TOTAL_EXECUTION_CPU_TIME_MS:
47266 				case TOTAL_COMPILE_CPU_TIME_MS:
47267 				case STALE_CAPTURE_POLICY_THRESHOLD:
47268 				case EXECUTION_COUNT:
47269 				case QUERY_CAPTURE_POLICY:
47270 				case WAIT_STATS_CAPTURE_MODE:
47271 				case MAX_PLANS_PER_QUERY:
47272 				case QUERY_CAPTURE_MODE:
47273 				case SIZE_BASED_CLEANUP_MODE:
47274 				case INTERVAL_LENGTH_MINUTES:
47275 				case MAX_STORAGE_SIZE_MB:
47276 				case DATA_FLUSH_INTERVAL_SECONDS:
47277 				case CLEANUP_POLICY:
47278 				case CUSTOM:
47279 				case STALE_QUERY_THRESHOLD_DAYS:
47280 				case OPERATION_MODE:
47281 				case QUERY_STORE:
47282 				case CURSOR_DEFAULT:
47283 				case GLOBAL:
47284 				case CURSOR_CLOSE_ON_COMMIT:
47285 				case HOURS:
47286 				case CHANGE_RETENTION:
47287 				case AUTO_CLEANUP:
47288 				case CHANGE_TRACKING:
47289 				case AUTOMATIC_TUNING:
47290 				case FORCE_LAST_GOOD_PLAN:
47291 				case AUTO_UPDATE_STATISTICS_ASYNC:
47292 				case AUTO_UPDATE_STATISTICS:
47293 				case AUTO_SHRINK:
47294 				case AUTO_CREATE_STATISTICS:
47295 				case INCREMENTAL:
47296 				case AUTO_CLOSE:
47297 				case DATA_RETENTION:
47298 				case TEMPORAL_HISTORY_RETENTION:
47299 				case EDITION:
47300 				case MIXED_PAGE_ALLOCATION:
47301 				case DISABLED:
47302 				case ALLOWED:
47303 				case HADR:
47304 				case MULTI_USER:
47305 				case RESTRICTED_USER:
47306 				case SINGLE_USER:
47307 				case OFFLINE:
47308 				case EMERGENCY:
47309 				case SUSPEND:
47310 				case DATE_CORRELATION_OPTIMIZATION:
47311 				case ELASTIC_POOL:
47312 				case SERVICE_OBJECTIVE:
47313 				case DATABASE_NAME:
47314 				case ALLOW_CONNECTIONS:
47315 				case GEO:
47316 				case NAMED:
47317 				case DATEFIRST:
47318 				case BACKUP_STORAGE_REDUNDANCY:
47319 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
47320 				case SECONDARY:
47321 				case FAILOVER:
47322 				case DEFAULT_FULLTEXT_LANGUAGE:
47323 				case DEFAULT_LANGUAGE:
47324 				case INLINE:
47325 				case NESTED_TRIGGERS:
47326 				case TRANSFORM_NOISE_WORDS:
47327 				case TWO_DIGIT_YEAR_CUTOFF:
47328 				case PERSISTENT_LOG_BUFFER:
47329 				case DIRECTORY_NAME:
47330 				case DATEFORMAT:
47331 				case DELAYED_DURABILITY:
47332 				case AUTHORIZATION:
47333 				case TRANSFER:
47334 				case PROVIDER:
47335 				case SEARCH:
47336 				case MEMBER:
47337 				case IDENTIFIER_:
47338 				case DELIMITED_IDENTIFIER_:
47339 					{
47340 					setState(6557);
47341 					identifier();
47342 					}
47343 					break;
47344 				default:
47345 					throw new NoViableAltException(this);
47346 				}
47347 				}
47348 				break;
47349 			case SID:
47350 				enterOuterAlt(_localctx, 3);
47351 				{
47352 				setState(6560);
47353 				match(SID);
47354 				setState(6561);
47355 				match(EQ_);
47356 				setState(6562);
47357 				sid();
47358 				}
47359 				break;
47360 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
47361 				enterOuterAlt(_localctx, 4);
47362 				{
47363 				setState(6563);
47364 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
47365 				setState(6564);
47366 				match(EQ_);
47367 				setState(6566);
47368 				_errHandler.sync(this);
47369 				_la = _input.LA(1);
47370 				if (_la==ON || _la==OFF) {
47371 					{
47372 					setState(6565);
47373 					_la = _input.LA(1);
47374 					if ( !(_la==ON || _la==OFF) ) {
47375 					_errHandler.recoverInline(this);
47376 					}
47377 					else {
47378 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47379 						_errHandler.reportMatch(this);
47380 						consume();
47381 					}
47382 					}
47383 				}
47384 
47385 				}
47386 				break;
47387 			default:
47388 				throw new NoViableAltException(this);
47389 			}
47390 		}
47391 		catch (RecognitionException re) {
47392 			_localctx.exception = re;
47393 			_errHandler.reportError(this, re);
47394 			_errHandler.recover(this, re);
47395 		}
47396 		finally {
47397 			exitRule();
47398 		}
47399 		return _localctx;
47400 	}
47401 
47402 	public static class LimitedOptionsListContext extends ParserRuleContext {
47403 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
47404 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
47405 		public SchemaNameContext schemaName() {
47406 			return getRuleContext(SchemaNameContext.class,0);
47407 		}
47408 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
47409 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
47410 		public IdentifierContext identifier() {
47411 			return getRuleContext(IdentifierContext.class,0);
47412 		}
47413 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
47414 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
47415 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
47416 		public LimitedOptionsListContext(ParserRuleContext parent, int invokingState) {
47417 			super(parent, invokingState);
47418 		}
47419 		@Override public int getRuleIndex() { return RULE_limitedOptionsList; }
47420 		@Override
47421 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47422 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLimitedOptionsList(this);
47423 			else return visitor.visitChildren(this);
47424 		}
47425 	}
47426 
47427 	public final LimitedOptionsListContext limitedOptionsList() throws RecognitionException {
47428 		LimitedOptionsListContext _localctx = new LimitedOptionsListContext(_ctx, getState());
47429 		enterRule(_localctx, 894, RULE_limitedOptionsList);
47430 		int _la;
47431 		try {
47432 			setState(6584);
47433 			_errHandler.sync(this);
47434 			switch (_input.LA(1)) {
47435 			case DEFAULT_SCHEMA:
47436 				enterOuterAlt(_localctx, 1);
47437 				{
47438 				setState(6570);
47439 				match(DEFAULT_SCHEMA);
47440 				setState(6571);
47441 				match(EQ_);
47442 				setState(6572);
47443 				schemaName();
47444 				}
47445 				break;
47446 			case DEFAULT_LANGUAGE:
47447 				enterOuterAlt(_localctx, 2);
47448 				{
47449 				setState(6573);
47450 				match(DEFAULT_LANGUAGE);
47451 				setState(6574);
47452 				match(EQ_);
47453 				setState(6577);
47454 				_errHandler.sync(this);
47455 				switch (_input.LA(1)) {
47456 				case NONE:
47457 					{
47458 					setState(6575);
47459 					match(NONE);
47460 					}
47461 					break;
47462 				case TRUNCATE:
47463 				case SCHEMA:
47464 				case COLUMNS:
47465 				case PRECISION:
47466 				case FUNCTION:
47467 				case TRIGGER:
47468 				case CAST:
47469 				case SUBSTRING:
47470 				case OFF:
47471 				case GROUP:
47472 				case LIMIT:
47473 				case OFFSET:
47474 				case SAVEPOINT:
47475 				case BOOLEAN:
47476 				case ARRAY:
47477 				case DATE:
47478 				case LOCALTIME:
47479 				case LOCALTIMESTAMP:
47480 				case QUARTER:
47481 				case WEEK:
47482 				case DAY:
47483 				case SECOND:
47484 				case MICROSECOND:
47485 				case MAX:
47486 				case MIN:
47487 				case SUM:
47488 				case COUNT:
47489 				case AVG:
47490 				case ENABLE:
47491 				case DISABLE:
47492 				case INSTANCE:
47493 				case DO:
47494 				case DEFINER:
47495 				case SQL:
47496 				case CASCADED:
47497 				case LOCAL:
47498 				case NEXT:
47499 				case NAME:
47500 				case INTEGER:
47501 				case TYPE:
47502 				case TEXT:
47503 				case VIEWS:
47504 				case READ_ONLY:
47505 				case DATABASE:
47506 				case RETURNS:
47507 				case DATEPART:
47508 				case PASSWORD:
47509 				case BINARY:
47510 				case HIDDEN_:
47511 				case MOD:
47512 				case PARTITION:
47513 				case PARTITIONS:
47514 				case TOP:
47515 				case ROW:
47516 				case ROWS:
47517 				case XOR:
47518 				case ALWAYS:
47519 				case ROLE:
47520 				case START:
47521 				case ALGORITHM:
47522 				case AUTO:
47523 				case BLOCKERS:
47524 				case CLUSTERED:
47525 				case NONCLUSTERED:
47526 				case COLUMNSTORE:
47527 				case CONTENT:
47528 				case YEARS:
47529 				case MONTHS:
47530 				case WEEKS:
47531 				case DAYS:
47532 				case MINUTES:
47533 				case DENY:
47534 				case DETERMINISTIC:
47535 				case DISTRIBUTION:
47536 				case DOCUMENT:
47537 				case DURABILITY:
47538 				case ENCRYPTED:
47539 				case FILESTREAM:
47540 				case FILETABLE:
47541 				case FILLFACTOR:
47542 				case FOLLOWING:
47543 				case HASH:
47544 				case HEAP:
47545 				case INBOUND:
47546 				case OUTBOUND:
47547 				case UNBOUNDED:
47548 				case INFINITE:
47549 				case LOGIN:
47550 				case MASKED:
47551 				case MAXDOP:
47552 				case MOVE:
47553 				case NOCHECK:
47554 				case OBJECT:
47555 				case ONLINE:
47556 				case OVER:
47557 				case PAGE:
47558 				case PAUSED:
47559 				case PERIOD:
47560 				case PERSISTED:
47561 				case PRECEDING:
47562 				case RANDOMIZED:
47563 				case RANGE:
47564 				case REBUILD:
47565 				case REPLICATE:
47566 				case REPLICATION:
47567 				case RESUMABLE:
47568 				case ROWGUIDCOL:
47569 				case SAVE:
47570 				case SELF:
47571 				case SPARSE:
47572 				case SWITCH:
47573 				case TRAN:
47574 				case TRANCOUNT:
47575 				case CONTROL:
47576 				case CONCAT:
47577 				case TAKE:
47578 				case OWNERSHIP:
47579 				case DEFINITION:
47580 				case APPLICATION:
47581 				case ASSEMBLY:
47582 				case SYMMETRIC:
47583 				case ASYMMETRIC:
47584 				case SERVER:
47585 				case RECEIVE:
47586 				case CHANGE:
47587 				case TRACE:
47588 				case TRACKING:
47589 				case RESOURCES:
47590 				case SETTINGS:
47591 				case STATE:
47592 				case AVAILABILITY:
47593 				case CREDENTIAL:
47594 				case ENDPOINT:
47595 				case EVENT:
47596 				case NOTIFICATION:
47597 				case LINKED:
47598 				case AUDIT:
47599 				case DDL:
47600 				case XML:
47601 				case IMPERSONATE:
47602 				case SECURABLES:
47603 				case AUTHENTICATE:
47604 				case EXTERNAL:
47605 				case ACCESS:
47606 				case ADMINISTER:
47607 				case BULK:
47608 				case OPERATIONS:
47609 				case UNSAFE:
47610 				case SHUTDOWN:
47611 				case SCOPED:
47612 				case CONFIGURATION:
47613 				case DATASPACE:
47614 				case SERVICE:
47615 				case CERTIFICATE:
47616 				case CONTRACT:
47617 				case ENCRYPTION:
47618 				case MASTER:
47619 				case DATA:
47620 				case SOURCE:
47621 				case FILE:
47622 				case FORMAT:
47623 				case LIBRARY:
47624 				case FULLTEXT:
47625 				case MASK:
47626 				case UNMASK:
47627 				case MESSAGE:
47628 				case REMOTE:
47629 				case BINDING:
47630 				case ROUTE:
47631 				case SECURITY:
47632 				case POLICY:
47633 				case AGGREGATE:
47634 				case QUEUE:
47635 				case RULE:
47636 				case SYNONYM:
47637 				case COLLECTION:
47638 				case SCRIPT:
47639 				case KILL:
47640 				case BACKUP:
47641 				case LOG:
47642 				case SHOWPLAN:
47643 				case SUBSCRIBE:
47644 				case QUERY:
47645 				case NOTIFICATIONS:
47646 				case CHECKPOINT:
47647 				case SEQUENCE:
47648 				case ABORT_AFTER_WAIT:
47649 				case ALLOW_PAGE_LOCKS:
47650 				case ALLOW_ROW_LOCKS:
47651 				case ALL_SPARSE_COLUMNS:
47652 				case BUCKET_COUNT:
47653 				case COLUMNSTORE_ARCHIVE:
47654 				case COLUMN_ENCRYPTION_KEY:
47655 				case COLUMN_SET:
47656 				case COMPRESSION_DELAY:
47657 				case DATABASE_DEAULT:
47658 				case DATA_COMPRESSION:
47659 				case DATA_CONSISTENCY_CHECK:
47660 				case ENCRYPTION_TYPE:
47661 				case SYSTEM_TIME:
47662 				case SYSTEM_VERSIONING:
47663 				case TEXTIMAGE_ON:
47664 				case WAIT_AT_LOW_PRIORITY:
47665 				case STATISTICS_INCREMENTAL:
47666 				case STATISTICS_NORECOMPUTE:
47667 				case ROUND_ROBIN:
47668 				case SCHEMA_AND_DATA:
47669 				case SCHEMA_ONLY:
47670 				case SORT_IN_TEMPDB:
47671 				case IGNORE_DUP_KEY:
47672 				case IMPLICIT_TRANSACTIONS:
47673 				case MAX_DURATION:
47674 				case MEMORY_OPTIMIZED:
47675 				case MIGRATION_STATE:
47676 				case PAD_INDEX:
47677 				case REMOTE_DATA_ARCHIVE:
47678 				case FILESTREAM_ON:
47679 				case FILETABLE_COLLATE_FILENAME:
47680 				case FILETABLE_DIRECTORY:
47681 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
47682 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
47683 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
47684 				case FILTER_PREDICATE:
47685 				case HISTORY_RETENTION_PERIOD:
47686 				case HISTORY_TABLE:
47687 				case LOCK_ESCALATION:
47688 				case DROP_EXISTING:
47689 				case ROW_NUMBER:
47690 				case FIRST:
47691 				case DATETIME2:
47692 				case OUTPUT:
47693 				case INSERTED:
47694 				case DELETED:
47695 				case FILENAME:
47696 				case MAXSIZE:
47697 				case FILEGROWTH:
47698 				case UNLIMITED:
47699 				case KB:
47700 				case MB:
47701 				case GB:
47702 				case TB:
47703 				case MEMORY_OPTIMIZED_DATA:
47704 				case FILEGROUP:
47705 				case NON_TRANSACTED_ACCESS:
47706 				case DB_CHAINING:
47707 				case TRUSTWORTHY:
47708 				case FORWARD_ONLY:
47709 				case KEYSET:
47710 				case FAST_FORWARD:
47711 				case SCROLL_LOCKS:
47712 				case OPTIMISTIC:
47713 				case TYPE_WARNING:
47714 				case SCHEMABINDING:
47715 				case CALLER:
47716 				case OWNER:
47717 				case SNAPSHOT:
47718 				case REPEATABLE:
47719 				case SERIALIZABLE:
47720 				case NATIVE_COMPILATION:
47721 				case VIEW_METADATA:
47722 				case INSTEAD:
47723 				case APPEND:
47724 				case INCREMENT:
47725 				case CACHE:
47726 				case MINVALUE:
47727 				case MAXVALUE:
47728 				case RESTART:
47729 				case LOB_COMPACTION:
47730 				case COMPRESS_ALL_ROW_GROUPS:
47731 				case REORGANIZE:
47732 				case RESUME:
47733 				case PAUSE:
47734 				case ABORT:
47735 				case ACCELERATED_DATABASE_RECOVERY:
47736 				case PERSISTENT_VERSION_STORE_FILEGROUP:
47737 				case IMMEDIATE:
47738 				case NO_WAIT:
47739 				case TARGET_RECOVERY_TIME:
47740 				case SECONDS:
47741 				case HONOR_BROKER_PRIORITY:
47742 				case ERROR_BROKER_CONVERSATIONS:
47743 				case NEW_BROKER:
47744 				case DISABLE_BROKER:
47745 				case ENABLE_BROKER:
47746 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
47747 				case READ_COMMITTED_SNAPSHOT:
47748 				case ALLOW_SNAPSHOT_ISOLATION:
47749 				case RECURSIVE_TRIGGERS:
47750 				case QUOTED_IDENTIFIER:
47751 				case NUMERIC_ROUNDABORT:
47752 				case CONCAT_NULL_YIELDS_NULL:
47753 				case COMPATIBILITY_LEVEL:
47754 				case ARITHABORT:
47755 				case ANSI_WARNINGS:
47756 				case ANSI_PADDING:
47757 				case ANSI_NULLS:
47758 				case ANSI_NULL_DEFAULT:
47759 				case PAGE_VERIFY:
47760 				case CHECKSUM:
47761 				case TORN_PAGE_DETECTION:
47762 				case BULK_LOGGED:
47763 				case RECOVERY:
47764 				case TOTAL_EXECUTION_CPU_TIME_MS:
47765 				case TOTAL_COMPILE_CPU_TIME_MS:
47766 				case STALE_CAPTURE_POLICY_THRESHOLD:
47767 				case EXECUTION_COUNT:
47768 				case QUERY_CAPTURE_POLICY:
47769 				case WAIT_STATS_CAPTURE_MODE:
47770 				case MAX_PLANS_PER_QUERY:
47771 				case QUERY_CAPTURE_MODE:
47772 				case SIZE_BASED_CLEANUP_MODE:
47773 				case INTERVAL_LENGTH_MINUTES:
47774 				case MAX_STORAGE_SIZE_MB:
47775 				case DATA_FLUSH_INTERVAL_SECONDS:
47776 				case CLEANUP_POLICY:
47777 				case CUSTOM:
47778 				case STALE_QUERY_THRESHOLD_DAYS:
47779 				case OPERATION_MODE:
47780 				case QUERY_STORE:
47781 				case CURSOR_DEFAULT:
47782 				case GLOBAL:
47783 				case CURSOR_CLOSE_ON_COMMIT:
47784 				case HOURS:
47785 				case CHANGE_RETENTION:
47786 				case AUTO_CLEANUP:
47787 				case CHANGE_TRACKING:
47788 				case AUTOMATIC_TUNING:
47789 				case FORCE_LAST_GOOD_PLAN:
47790 				case AUTO_UPDATE_STATISTICS_ASYNC:
47791 				case AUTO_UPDATE_STATISTICS:
47792 				case AUTO_SHRINK:
47793 				case AUTO_CREATE_STATISTICS:
47794 				case INCREMENTAL:
47795 				case AUTO_CLOSE:
47796 				case DATA_RETENTION:
47797 				case TEMPORAL_HISTORY_RETENTION:
47798 				case EDITION:
47799 				case MIXED_PAGE_ALLOCATION:
47800 				case DISABLED:
47801 				case ALLOWED:
47802 				case HADR:
47803 				case MULTI_USER:
47804 				case RESTRICTED_USER:
47805 				case SINGLE_USER:
47806 				case OFFLINE:
47807 				case EMERGENCY:
47808 				case SUSPEND:
47809 				case DATE_CORRELATION_OPTIMIZATION:
47810 				case ELASTIC_POOL:
47811 				case SERVICE_OBJECTIVE:
47812 				case DATABASE_NAME:
47813 				case ALLOW_CONNECTIONS:
47814 				case GEO:
47815 				case NAMED:
47816 				case DATEFIRST:
47817 				case BACKUP_STORAGE_REDUNDANCY:
47818 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
47819 				case SECONDARY:
47820 				case FAILOVER:
47821 				case DEFAULT_FULLTEXT_LANGUAGE:
47822 				case DEFAULT_LANGUAGE:
47823 				case INLINE:
47824 				case NESTED_TRIGGERS:
47825 				case TRANSFORM_NOISE_WORDS:
47826 				case TWO_DIGIT_YEAR_CUTOFF:
47827 				case PERSISTENT_LOG_BUFFER:
47828 				case DIRECTORY_NAME:
47829 				case DATEFORMAT:
47830 				case DELAYED_DURABILITY:
47831 				case AUTHORIZATION:
47832 				case TRANSFER:
47833 				case PROVIDER:
47834 				case SEARCH:
47835 				case MEMBER:
47836 				case IDENTIFIER_:
47837 				case DELIMITED_IDENTIFIER_:
47838 					{
47839 					setState(6576);
47840 					identifier();
47841 					}
47842 					break;
47843 				default:
47844 					throw new NoViableAltException(this);
47845 				}
47846 				}
47847 				break;
47848 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
47849 				enterOuterAlt(_localctx, 3);
47850 				{
47851 				setState(6579);
47852 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
47853 				setState(6580);
47854 				match(EQ_);
47855 				setState(6582);
47856 				_errHandler.sync(this);
47857 				_la = _input.LA(1);
47858 				if (_la==ON || _la==OFF) {
47859 					{
47860 					setState(6581);
47861 					_la = _input.LA(1);
47862 					if ( !(_la==ON || _la==OFF) ) {
47863 					_errHandler.recoverInline(this);
47864 					}
47865 					else {
47866 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47867 						_errHandler.reportMatch(this);
47868 						consume();
47869 					}
47870 					}
47871 				}
47872 
47873 				}
47874 				break;
47875 			default:
47876 				throw new NoViableAltException(this);
47877 			}
47878 		}
47879 		catch (RecognitionException re) {
47880 			_localctx.exception = re;
47881 			_errHandler.reportError(this, re);
47882 			_errHandler.recover(this, re);
47883 		}
47884 		finally {
47885 			exitRule();
47886 		}
47887 		return _localctx;
47888 	}
47889 
47890 	public static class CreateUserFromExternalProviderClauseContext extends ParserRuleContext {
47891 		public UserNameContext userName() {
47892 			return getRuleContext(UserNameContext.class,0);
47893 		}
47894 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47895 		public IdentifierContext identifier() {
47896 			return getRuleContext(IdentifierContext.class,0);
47897 		}
47898 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47899 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47900 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
47901 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
47902 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47903 		public List<LimitedOptionsListContext> limitedOptionsList() {
47904 			return getRuleContexts(LimitedOptionsListContext.class);
47905 		}
47906 		public LimitedOptionsListContext limitedOptionsList(int i) {
47907 			return getRuleContext(LimitedOptionsListContext.class,i);
47908 		}
47909 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47910 		public TerminalNode COMMA_(int i) {
47911 			return getToken(SQLServerStatementParser.COMMA_, i);
47912 		}
47913 		public CreateUserFromExternalProviderClauseContext(ParserRuleContext parent, int invokingState) {
47914 			super(parent, invokingState);
47915 		}
47916 		@Override public int getRuleIndex() { return RULE_createUserFromExternalProviderClause; }
47917 		@Override
47918 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47919 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserFromExternalProviderClause(this);
47920 			else return visitor.visitChildren(this);
47921 		}
47922 	}
47923 
47924 	public final CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() throws RecognitionException {
47925 		CreateUserFromExternalProviderClauseContext _localctx = new CreateUserFromExternalProviderClauseContext(_ctx, getState());
47926 		enterRule(_localctx, 896, RULE_createUserFromExternalProviderClause);
47927 		int _la;
47928 		try {
47929 			setState(6606);
47930 			_errHandler.sync(this);
47931 			switch (_input.LA(1)) {
47932 			case TRUNCATE:
47933 			case SCHEMA:
47934 			case COLUMNS:
47935 			case PRECISION:
47936 			case FUNCTION:
47937 			case TRIGGER:
47938 			case CAST:
47939 			case SUBSTRING:
47940 			case OFF:
47941 			case GROUP:
47942 			case LIMIT:
47943 			case OFFSET:
47944 			case SAVEPOINT:
47945 			case BOOLEAN:
47946 			case ARRAY:
47947 			case DATE:
47948 			case LOCALTIME:
47949 			case LOCALTIMESTAMP:
47950 			case QUARTER:
47951 			case WEEK:
47952 			case DAY:
47953 			case SECOND:
47954 			case MICROSECOND:
47955 			case MAX:
47956 			case MIN:
47957 			case SUM:
47958 			case COUNT:
47959 			case AVG:
47960 			case ENABLE:
47961 			case DISABLE:
47962 			case INSTANCE:
47963 			case DO:
47964 			case DEFINER:
47965 			case SQL:
47966 			case CASCADED:
47967 			case LOCAL:
47968 			case NEXT:
47969 			case NAME:
47970 			case INTEGER:
47971 			case TYPE:
47972 			case TEXT:
47973 			case VIEWS:
47974 			case READ_ONLY:
47975 			case DATABASE:
47976 			case RETURNS:
47977 			case DATEPART:
47978 			case PASSWORD:
47979 			case BINARY:
47980 			case HIDDEN_:
47981 			case MOD:
47982 			case PARTITION:
47983 			case PARTITIONS:
47984 			case TOP:
47985 			case ROW:
47986 			case ROWS:
47987 			case XOR:
47988 			case ALWAYS:
47989 			case ROLE:
47990 			case START:
47991 			case ALGORITHM:
47992 			case AUTO:
47993 			case BLOCKERS:
47994 			case CLUSTERED:
47995 			case NONCLUSTERED:
47996 			case COLUMNSTORE:
47997 			case CONTENT:
47998 			case YEARS:
47999 			case MONTHS:
48000 			case WEEKS:
48001 			case DAYS:
48002 			case MINUTES:
48003 			case DENY:
48004 			case DETERMINISTIC:
48005 			case DISTRIBUTION:
48006 			case DOCUMENT:
48007 			case DURABILITY:
48008 			case ENCRYPTED:
48009 			case FILESTREAM:
48010 			case FILETABLE:
48011 			case FILLFACTOR:
48012 			case FOLLOWING:
48013 			case HASH:
48014 			case HEAP:
48015 			case INBOUND:
48016 			case OUTBOUND:
48017 			case UNBOUNDED:
48018 			case INFINITE:
48019 			case LOGIN:
48020 			case MASKED:
48021 			case MAXDOP:
48022 			case MOVE:
48023 			case NOCHECK:
48024 			case OBJECT:
48025 			case ONLINE:
48026 			case OVER:
48027 			case PAGE:
48028 			case PAUSED:
48029 			case PERIOD:
48030 			case PERSISTED:
48031 			case PRECEDING:
48032 			case RANDOMIZED:
48033 			case RANGE:
48034 			case REBUILD:
48035 			case REPLICATE:
48036 			case REPLICATION:
48037 			case RESUMABLE:
48038 			case ROWGUIDCOL:
48039 			case SAVE:
48040 			case SELF:
48041 			case SPARSE:
48042 			case SWITCH:
48043 			case TRAN:
48044 			case TRANCOUNT:
48045 			case CONTROL:
48046 			case CONCAT:
48047 			case TAKE:
48048 			case OWNERSHIP:
48049 			case DEFINITION:
48050 			case APPLICATION:
48051 			case ASSEMBLY:
48052 			case SYMMETRIC:
48053 			case ASYMMETRIC:
48054 			case SERVER:
48055 			case RECEIVE:
48056 			case CHANGE:
48057 			case TRACE:
48058 			case TRACKING:
48059 			case RESOURCES:
48060 			case SETTINGS:
48061 			case STATE:
48062 			case AVAILABILITY:
48063 			case CREDENTIAL:
48064 			case ENDPOINT:
48065 			case EVENT:
48066 			case NOTIFICATION:
48067 			case LINKED:
48068 			case AUDIT:
48069 			case DDL:
48070 			case XML:
48071 			case IMPERSONATE:
48072 			case SECURABLES:
48073 			case AUTHENTICATE:
48074 			case EXTERNAL:
48075 			case ACCESS:
48076 			case ADMINISTER:
48077 			case BULK:
48078 			case OPERATIONS:
48079 			case UNSAFE:
48080 			case SHUTDOWN:
48081 			case SCOPED:
48082 			case CONFIGURATION:
48083 			case DATASPACE:
48084 			case SERVICE:
48085 			case CERTIFICATE:
48086 			case CONTRACT:
48087 			case ENCRYPTION:
48088 			case MASTER:
48089 			case DATA:
48090 			case SOURCE:
48091 			case FILE:
48092 			case FORMAT:
48093 			case LIBRARY:
48094 			case FULLTEXT:
48095 			case MASK:
48096 			case UNMASK:
48097 			case MESSAGE:
48098 			case REMOTE:
48099 			case BINDING:
48100 			case ROUTE:
48101 			case SECURITY:
48102 			case POLICY:
48103 			case AGGREGATE:
48104 			case QUEUE:
48105 			case RULE:
48106 			case SYNONYM:
48107 			case COLLECTION:
48108 			case SCRIPT:
48109 			case KILL:
48110 			case BACKUP:
48111 			case LOG:
48112 			case SHOWPLAN:
48113 			case SUBSCRIBE:
48114 			case QUERY:
48115 			case NOTIFICATIONS:
48116 			case CHECKPOINT:
48117 			case SEQUENCE:
48118 			case ABORT_AFTER_WAIT:
48119 			case ALLOW_PAGE_LOCKS:
48120 			case ALLOW_ROW_LOCKS:
48121 			case ALL_SPARSE_COLUMNS:
48122 			case BUCKET_COUNT:
48123 			case COLUMNSTORE_ARCHIVE:
48124 			case COLUMN_ENCRYPTION_KEY:
48125 			case COLUMN_SET:
48126 			case COMPRESSION_DELAY:
48127 			case DATABASE_DEAULT:
48128 			case DATA_COMPRESSION:
48129 			case DATA_CONSISTENCY_CHECK:
48130 			case ENCRYPTION_TYPE:
48131 			case SYSTEM_TIME:
48132 			case SYSTEM_VERSIONING:
48133 			case TEXTIMAGE_ON:
48134 			case WAIT_AT_LOW_PRIORITY:
48135 			case STATISTICS_INCREMENTAL:
48136 			case STATISTICS_NORECOMPUTE:
48137 			case ROUND_ROBIN:
48138 			case SCHEMA_AND_DATA:
48139 			case SCHEMA_ONLY:
48140 			case SORT_IN_TEMPDB:
48141 			case IGNORE_DUP_KEY:
48142 			case IMPLICIT_TRANSACTIONS:
48143 			case MAX_DURATION:
48144 			case MEMORY_OPTIMIZED:
48145 			case MIGRATION_STATE:
48146 			case PAD_INDEX:
48147 			case REMOTE_DATA_ARCHIVE:
48148 			case FILESTREAM_ON:
48149 			case FILETABLE_COLLATE_FILENAME:
48150 			case FILETABLE_DIRECTORY:
48151 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
48152 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
48153 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
48154 			case FILTER_PREDICATE:
48155 			case HISTORY_RETENTION_PERIOD:
48156 			case HISTORY_TABLE:
48157 			case LOCK_ESCALATION:
48158 			case DROP_EXISTING:
48159 			case ROW_NUMBER:
48160 			case FIRST:
48161 			case DATETIME2:
48162 			case OUTPUT:
48163 			case INSERTED:
48164 			case DELETED:
48165 			case FILENAME:
48166 			case MAXSIZE:
48167 			case FILEGROWTH:
48168 			case UNLIMITED:
48169 			case KB:
48170 			case MB:
48171 			case GB:
48172 			case TB:
48173 			case MEMORY_OPTIMIZED_DATA:
48174 			case FILEGROUP:
48175 			case NON_TRANSACTED_ACCESS:
48176 			case DB_CHAINING:
48177 			case TRUSTWORTHY:
48178 			case FORWARD_ONLY:
48179 			case KEYSET:
48180 			case FAST_FORWARD:
48181 			case SCROLL_LOCKS:
48182 			case OPTIMISTIC:
48183 			case TYPE_WARNING:
48184 			case SCHEMABINDING:
48185 			case CALLER:
48186 			case OWNER:
48187 			case SNAPSHOT:
48188 			case REPEATABLE:
48189 			case SERIALIZABLE:
48190 			case NATIVE_COMPILATION:
48191 			case VIEW_METADATA:
48192 			case INSTEAD:
48193 			case APPEND:
48194 			case INCREMENT:
48195 			case CACHE:
48196 			case MINVALUE:
48197 			case MAXVALUE:
48198 			case RESTART:
48199 			case LOB_COMPACTION:
48200 			case COMPRESS_ALL_ROW_GROUPS:
48201 			case REORGANIZE:
48202 			case RESUME:
48203 			case PAUSE:
48204 			case ABORT:
48205 			case ACCELERATED_DATABASE_RECOVERY:
48206 			case PERSISTENT_VERSION_STORE_FILEGROUP:
48207 			case IMMEDIATE:
48208 			case NO_WAIT:
48209 			case TARGET_RECOVERY_TIME:
48210 			case SECONDS:
48211 			case HONOR_BROKER_PRIORITY:
48212 			case ERROR_BROKER_CONVERSATIONS:
48213 			case NEW_BROKER:
48214 			case DISABLE_BROKER:
48215 			case ENABLE_BROKER:
48216 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
48217 			case READ_COMMITTED_SNAPSHOT:
48218 			case ALLOW_SNAPSHOT_ISOLATION:
48219 			case RECURSIVE_TRIGGERS:
48220 			case QUOTED_IDENTIFIER:
48221 			case NUMERIC_ROUNDABORT:
48222 			case CONCAT_NULL_YIELDS_NULL:
48223 			case COMPATIBILITY_LEVEL:
48224 			case ARITHABORT:
48225 			case ANSI_WARNINGS:
48226 			case ANSI_PADDING:
48227 			case ANSI_NULLS:
48228 			case ANSI_NULL_DEFAULT:
48229 			case PAGE_VERIFY:
48230 			case CHECKSUM:
48231 			case TORN_PAGE_DETECTION:
48232 			case BULK_LOGGED:
48233 			case RECOVERY:
48234 			case TOTAL_EXECUTION_CPU_TIME_MS:
48235 			case TOTAL_COMPILE_CPU_TIME_MS:
48236 			case STALE_CAPTURE_POLICY_THRESHOLD:
48237 			case EXECUTION_COUNT:
48238 			case QUERY_CAPTURE_POLICY:
48239 			case WAIT_STATS_CAPTURE_MODE:
48240 			case MAX_PLANS_PER_QUERY:
48241 			case QUERY_CAPTURE_MODE:
48242 			case SIZE_BASED_CLEANUP_MODE:
48243 			case INTERVAL_LENGTH_MINUTES:
48244 			case MAX_STORAGE_SIZE_MB:
48245 			case DATA_FLUSH_INTERVAL_SECONDS:
48246 			case CLEANUP_POLICY:
48247 			case CUSTOM:
48248 			case STALE_QUERY_THRESHOLD_DAYS:
48249 			case OPERATION_MODE:
48250 			case QUERY_STORE:
48251 			case CURSOR_DEFAULT:
48252 			case GLOBAL:
48253 			case CURSOR_CLOSE_ON_COMMIT:
48254 			case HOURS:
48255 			case CHANGE_RETENTION:
48256 			case AUTO_CLEANUP:
48257 			case CHANGE_TRACKING:
48258 			case AUTOMATIC_TUNING:
48259 			case FORCE_LAST_GOOD_PLAN:
48260 			case AUTO_UPDATE_STATISTICS_ASYNC:
48261 			case AUTO_UPDATE_STATISTICS:
48262 			case AUTO_SHRINK:
48263 			case AUTO_CREATE_STATISTICS:
48264 			case INCREMENTAL:
48265 			case AUTO_CLOSE:
48266 			case DATA_RETENTION:
48267 			case TEMPORAL_HISTORY_RETENTION:
48268 			case EDITION:
48269 			case MIXED_PAGE_ALLOCATION:
48270 			case DISABLED:
48271 			case ALLOWED:
48272 			case HADR:
48273 			case MULTI_USER:
48274 			case RESTRICTED_USER:
48275 			case SINGLE_USER:
48276 			case OFFLINE:
48277 			case EMERGENCY:
48278 			case SUSPEND:
48279 			case DATE_CORRELATION_OPTIMIZATION:
48280 			case ELASTIC_POOL:
48281 			case SERVICE_OBJECTIVE:
48282 			case DATABASE_NAME:
48283 			case ALLOW_CONNECTIONS:
48284 			case GEO:
48285 			case NAMED:
48286 			case DATEFIRST:
48287 			case BACKUP_STORAGE_REDUNDANCY:
48288 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
48289 			case SECONDARY:
48290 			case FAILOVER:
48291 			case DEFAULT_FULLTEXT_LANGUAGE:
48292 			case DEFAULT_LANGUAGE:
48293 			case INLINE:
48294 			case NESTED_TRIGGERS:
48295 			case TRANSFORM_NOISE_WORDS:
48296 			case TWO_DIGIT_YEAR_CUTOFF:
48297 			case PERSISTENT_LOG_BUFFER:
48298 			case DIRECTORY_NAME:
48299 			case DATEFORMAT:
48300 			case DELAYED_DURABILITY:
48301 			case AUTHORIZATION:
48302 			case TRANSFER:
48303 			case PROVIDER:
48304 			case SEARCH:
48305 			case MEMBER:
48306 			case IDENTIFIER_:
48307 			case DELIMITED_IDENTIFIER_:
48308 				enterOuterAlt(_localctx, 1);
48309 				{
48310 				setState(6586);
48311 				userName();
48312 				setState(6590);
48313 				_errHandler.sync(this);
48314 				_la = _input.LA(1);
48315 				if (_la==FROM || _la==FOR) {
48316 					{
48317 					setState(6587);
48318 					_la = _input.LA(1);
48319 					if ( !(_la==FROM || _la==FOR) ) {
48320 					_errHandler.recoverInline(this);
48321 					}
48322 					else {
48323 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48324 						_errHandler.reportMatch(this);
48325 						consume();
48326 					}
48327 					setState(6588);
48328 					match(LOGIN);
48329 					setState(6589);
48330 					identifier();
48331 					}
48332 				}
48333 
48334 				}
48335 				break;
48336 			case FROM:
48337 				enterOuterAlt(_localctx, 2);
48338 				{
48339 				setState(6592);
48340 				match(FROM);
48341 				setState(6593);
48342 				match(EXTERNAL);
48343 				setState(6594);
48344 				match(PROVIDER);
48345 				setState(6604);
48346 				_errHandler.sync(this);
48347 				_la = _input.LA(1);
48348 				if (_la==WITH) {
48349 					{
48350 					setState(6595);
48351 					match(WITH);
48352 					setState(6596);
48353 					limitedOptionsList();
48354 					setState(6601);
48355 					_errHandler.sync(this);
48356 					_la = _input.LA(1);
48357 					while (_la==COMMA_) {
48358 						{
48359 						{
48360 						setState(6597);
48361 						match(COMMA_);
48362 						setState(6598);
48363 						limitedOptionsList();
48364 						}
48365 						}
48366 						setState(6603);
48367 						_errHandler.sync(this);
48368 						_la = _input.LA(1);
48369 					}
48370 					}
48371 				}
48372 
48373 				}
48374 				break;
48375 			default:
48376 				throw new NoViableAltException(this);
48377 			}
48378 		}
48379 		catch (RecognitionException re) {
48380 			_localctx.exception = re;
48381 			_errHandler.reportError(this, re);
48382 			_errHandler.recover(this, re);
48383 		}
48384 		finally {
48385 			exitRule();
48386 		}
48387 		return _localctx;
48388 	}
48389 
48390 	public static class CreateUserWithDefaultSchemaContext extends ParserRuleContext {
48391 		public UserNameContext userName() {
48392 			return getRuleContext(UserNameContext.class,0);
48393 		}
48394 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48395 		public IdentifierContext identifier() {
48396 			return getRuleContext(IdentifierContext.class,0);
48397 		}
48398 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
48399 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48400 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48401 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48402 		public SchemaNameContext schemaName() {
48403 			return getRuleContext(SchemaNameContext.class,0);
48404 		}
48405 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48406 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48407 		public CreateUserWithDefaultSchemaContext(ParserRuleContext parent, int invokingState) {
48408 			super(parent, invokingState);
48409 		}
48410 		@Override public int getRuleIndex() { return RULE_createUserWithDefaultSchema; }
48411 		@Override
48412 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48413 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithDefaultSchema(this);
48414 			else return visitor.visitChildren(this);
48415 		}
48416 	}
48417 
48418 	public final CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() throws RecognitionException {
48419 		CreateUserWithDefaultSchemaContext _localctx = new CreateUserWithDefaultSchemaContext(_ctx, getState());
48420 		enterRule(_localctx, 898, RULE_createUserWithDefaultSchema);
48421 		int _la;
48422 		try {
48423 			enterOuterAlt(_localctx, 1);
48424 			{
48425 			setState(6608);
48426 			userName();
48427 			setState(6614);
48428 			_errHandler.sync(this);
48429 			switch (_input.LA(1)) {
48430 			case FROM:
48431 			case FOR:
48432 				{
48433 				setState(6609);
48434 				_la = _input.LA(1);
48435 				if ( !(_la==FROM || _la==FOR) ) {
48436 				_errHandler.recoverInline(this);
48437 				}
48438 				else {
48439 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48440 					_errHandler.reportMatch(this);
48441 					consume();
48442 				}
48443 				setState(6610);
48444 				match(LOGIN);
48445 				setState(6611);
48446 				identifier();
48447 				}
48448 				break;
48449 			case WITHOUT:
48450 				{
48451 				setState(6612);
48452 				match(WITHOUT);
48453 				setState(6613);
48454 				match(LOGIN);
48455 				}
48456 				break;
48457 			case EOF:
48458 			case SEMI_:
48459 			case WITH:
48460 				break;
48461 			default:
48462 				break;
48463 			}
48464 			setState(6620);
48465 			_errHandler.sync(this);
48466 			_la = _input.LA(1);
48467 			if (_la==WITH) {
48468 				{
48469 				setState(6616);
48470 				match(WITH);
48471 				setState(6617);
48472 				match(DEFAULT_SCHEMA);
48473 				setState(6618);
48474 				match(EQ_);
48475 				setState(6619);
48476 				schemaName();
48477 				}
48478 			}
48479 
48480 			}
48481 		}
48482 		catch (RecognitionException re) {
48483 			_localctx.exception = re;
48484 			_errHandler.reportError(this, re);
48485 			_errHandler.recover(this, re);
48486 		}
48487 		finally {
48488 			exitRule();
48489 		}
48490 		return _localctx;
48491 	}
48492 
48493 	public static class CreateUserWithAzureActiveDirectoryPrincipalClauseContext extends ParserRuleContext {
48494 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
48495 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
48496 		}
48497 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48498 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
48499 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
48500 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48501 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48502 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48503 		public SchemaNameContext schemaName() {
48504 			return getRuleContext(SchemaNameContext.class,0);
48505 		}
48506 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
48507 			super(parent, invokingState);
48508 		}
48509 		@Override public int getRuleIndex() { return RULE_createUserWithAzureActiveDirectoryPrincipalClause; }
48510 		@Override
48511 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48512 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithAzureActiveDirectoryPrincipalClause(this);
48513 			else return visitor.visitChildren(this);
48514 		}
48515 	}
48516 
48517 	public final CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() throws RecognitionException {
48518 		CreateUserWithAzureActiveDirectoryPrincipalClauseContext _localctx = new CreateUserWithAzureActiveDirectoryPrincipalClauseContext(_ctx, getState());
48519 		enterRule(_localctx, 900, RULE_createUserWithAzureActiveDirectoryPrincipalClause);
48520 		int _la;
48521 		try {
48522 			enterOuterAlt(_localctx, 1);
48523 			{
48524 			setState(6622);
48525 			azureActiveDirectoryPrincipal();
48526 			setState(6623);
48527 			match(FROM);
48528 			setState(6624);
48529 			match(EXTERNAL);
48530 			setState(6625);
48531 			match(PROVIDER);
48532 			setState(6630);
48533 			_errHandler.sync(this);
48534 			_la = _input.LA(1);
48535 			if (_la==WITH) {
48536 				{
48537 				setState(6626);
48538 				match(WITH);
48539 				setState(6627);
48540 				match(DEFAULT_SCHEMA);
48541 				setState(6628);
48542 				match(EQ_);
48543 				setState(6629);
48544 				schemaName();
48545 				}
48546 			}
48547 
48548 			}
48549 		}
48550 		catch (RecognitionException re) {
48551 			_localctx.exception = re;
48552 			_errHandler.reportError(this, re);
48553 			_errHandler.recover(this, re);
48554 		}
48555 		finally {
48556 			exitRule();
48557 		}
48558 		return _localctx;
48559 	}
48560 
48561 	public static class WindowsPrincipalContext extends ParserRuleContext {
48562 		public UserNameContext userName() {
48563 			return getRuleContext(UserNameContext.class,0);
48564 		}
48565 		public WindowsPrincipalContext(ParserRuleContext parent, int invokingState) {
48566 			super(parent, invokingState);
48567 		}
48568 		@Override public int getRuleIndex() { return RULE_windowsPrincipal; }
48569 		@Override
48570 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48571 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsPrincipal(this);
48572 			else return visitor.visitChildren(this);
48573 		}
48574 	}
48575 
48576 	public final WindowsPrincipalContext windowsPrincipal() throws RecognitionException {
48577 		WindowsPrincipalContext _localctx = new WindowsPrincipalContext(_ctx, getState());
48578 		enterRule(_localctx, 902, RULE_windowsPrincipal);
48579 		try {
48580 			enterOuterAlt(_localctx, 1);
48581 			{
48582 			setState(6632);
48583 			userName();
48584 			}
48585 		}
48586 		catch (RecognitionException re) {
48587 			_localctx.exception = re;
48588 			_errHandler.reportError(this, re);
48589 			_errHandler.recover(this, re);
48590 		}
48591 		finally {
48592 			exitRule();
48593 		}
48594 		return _localctx;
48595 	}
48596 
48597 	public static class AzureActiveDirectoryPrincipalContext extends ParserRuleContext {
48598 		public UserNameContext userName() {
48599 			return getRuleContext(UserNameContext.class,0);
48600 		}
48601 		public AzureActiveDirectoryPrincipalContext(ParserRuleContext parent, int invokingState) {
48602 			super(parent, invokingState);
48603 		}
48604 		@Override public int getRuleIndex() { return RULE_azureActiveDirectoryPrincipal; }
48605 		@Override
48606 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48607 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureActiveDirectoryPrincipal(this);
48608 			else return visitor.visitChildren(this);
48609 		}
48610 	}
48611 
48612 	public final AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() throws RecognitionException {
48613 		AzureActiveDirectoryPrincipalContext _localctx = new AzureActiveDirectoryPrincipalContext(_ctx, getState());
48614 		enterRule(_localctx, 904, RULE_azureActiveDirectoryPrincipal);
48615 		try {
48616 			enterOuterAlt(_localctx, 1);
48617 			{
48618 			setState(6634);
48619 			userName();
48620 			}
48621 		}
48622 		catch (RecognitionException re) {
48623 			_localctx.exception = re;
48624 			_errHandler.reportError(this, re);
48625 			_errHandler.recover(this, re);
48626 		}
48627 		finally {
48628 			exitRule();
48629 		}
48630 		return _localctx;
48631 	}
48632 
48633 	public static class UserNameContext extends ParserRuleContext {
48634 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
48635 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
48636 		}
48637 		public UserNameContext(ParserRuleContext parent, int invokingState) {
48638 			super(parent, invokingState);
48639 		}
48640 		@Override public int getRuleIndex() { return RULE_userName; }
48641 		@Override
48642 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48643 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUserName(this);
48644 			else return visitor.visitChildren(this);
48645 		}
48646 	}
48647 
48648 	public final UserNameContext userName() throws RecognitionException {
48649 		UserNameContext _localctx = new UserNameContext(_ctx, getState());
48650 		enterRule(_localctx, 906, RULE_userName);
48651 		try {
48652 			enterOuterAlt(_localctx, 1);
48653 			{
48654 			setState(6636);
48655 			ignoredNameIdentifier();
48656 			}
48657 		}
48658 		catch (RecognitionException re) {
48659 			_localctx.exception = re;
48660 			_errHandler.reportError(this, re);
48661 			_errHandler.recover(this, re);
48662 		}
48663 		finally {
48664 			exitRule();
48665 		}
48666 		return _localctx;
48667 	}
48668 
48669 	public static class IgnoredNameIdentifierContext extends ParserRuleContext {
48670 		public List<IdentifierContext> identifier() {
48671 			return getRuleContexts(IdentifierContext.class);
48672 		}
48673 		public IdentifierContext identifier(int i) {
48674 			return getRuleContext(IdentifierContext.class,i);
48675 		}
48676 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
48677 		public IgnoredNameIdentifierContext(ParserRuleContext parent, int invokingState) {
48678 			super(parent, invokingState);
48679 		}
48680 		@Override public int getRuleIndex() { return RULE_ignoredNameIdentifier; }
48681 		@Override
48682 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48683 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredNameIdentifier(this);
48684 			else return visitor.visitChildren(this);
48685 		}
48686 	}
48687 
48688 	public final IgnoredNameIdentifierContext ignoredNameIdentifier() throws RecognitionException {
48689 		IgnoredNameIdentifierContext _localctx = new IgnoredNameIdentifierContext(_ctx, getState());
48690 		enterRule(_localctx, 908, RULE_ignoredNameIdentifier);
48691 		int _la;
48692 		try {
48693 			enterOuterAlt(_localctx, 1);
48694 			{
48695 			setState(6638);
48696 			identifier();
48697 			setState(6641);
48698 			_errHandler.sync(this);
48699 			_la = _input.LA(1);
48700 			if (_la==DOT_) {
48701 				{
48702 				setState(6639);
48703 				match(DOT_);
48704 				setState(6640);
48705 				identifier();
48706 				}
48707 			}
48708 
48709 			}
48710 		}
48711 		catch (RecognitionException re) {
48712 			_localctx.exception = re;
48713 			_errHandler.reportError(this, re);
48714 			_errHandler.recover(this, re);
48715 		}
48716 		finally {
48717 			exitRule();
48718 		}
48719 		return _localctx;
48720 	}
48721 
48722 	public static class DropUserContext extends ParserRuleContext {
48723 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
48724 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
48725 		public UserNameContext userName() {
48726 			return getRuleContext(UserNameContext.class,0);
48727 		}
48728 		public IfExistsContext ifExists() {
48729 			return getRuleContext(IfExistsContext.class,0);
48730 		}
48731 		public DropUserContext(ParserRuleContext parent, int invokingState) {
48732 			super(parent, invokingState);
48733 		}
48734 		@Override public int getRuleIndex() { return RULE_dropUser; }
48735 		@Override
48736 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48737 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropUser(this);
48738 			else return visitor.visitChildren(this);
48739 		}
48740 	}
48741 
48742 	public final DropUserContext dropUser() throws RecognitionException {
48743 		DropUserContext _localctx = new DropUserContext(_ctx, getState());
48744 		enterRule(_localctx, 910, RULE_dropUser);
48745 		int _la;
48746 		try {
48747 			enterOuterAlt(_localctx, 1);
48748 			{
48749 			setState(6643);
48750 			match(DROP);
48751 			setState(6644);
48752 			match(USER);
48753 			setState(6646);
48754 			_errHandler.sync(this);
48755 			_la = _input.LA(1);
48756 			if (_la==IF) {
48757 				{
48758 				setState(6645);
48759 				ifExists();
48760 				}
48761 			}
48762 
48763 			setState(6648);
48764 			userName();
48765 			}
48766 		}
48767 		catch (RecognitionException re) {
48768 			_localctx.exception = re;
48769 			_errHandler.reportError(this, re);
48770 			_errHandler.recover(this, re);
48771 		}
48772 		finally {
48773 			exitRule();
48774 		}
48775 		return _localctx;
48776 	}
48777 
48778 	public static class AlterUserContext extends ParserRuleContext {
48779 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
48780 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
48781 		public UserNameContext userName() {
48782 			return getRuleContext(UserNameContext.class,0);
48783 		}
48784 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48785 		public List<SetItemContext> setItem() {
48786 			return getRuleContexts(SetItemContext.class);
48787 		}
48788 		public SetItemContext setItem(int i) {
48789 			return getRuleContext(SetItemContext.class,i);
48790 		}
48791 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48792 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
48793 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
48794 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48795 		public TerminalNode COMMA_(int i) {
48796 			return getToken(SQLServerStatementParser.COMMA_, i);
48797 		}
48798 		public AlterUserContext(ParserRuleContext parent, int invokingState) {
48799 			super(parent, invokingState);
48800 		}
48801 		@Override public int getRuleIndex() { return RULE_alterUser; }
48802 		@Override
48803 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48804 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterUser(this);
48805 			else return visitor.visitChildren(this);
48806 		}
48807 	}
48808 
48809 	public final AlterUserContext alterUser() throws RecognitionException {
48810 		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
48811 		enterRule(_localctx, 912, RULE_alterUser);
48812 		int _la;
48813 		try {
48814 			enterOuterAlt(_localctx, 1);
48815 			{
48816 			setState(6650);
48817 			match(ALTER);
48818 			setState(6651);
48819 			match(USER);
48820 			setState(6652);
48821 			userName();
48822 			setState(6665);
48823 			_errHandler.sync(this);
48824 			switch (_input.LA(1)) {
48825 			case WITH:
48826 				{
48827 				setState(6653);
48828 				match(WITH);
48829 				setState(6654);
48830 				setItem();
48831 				setState(6659);
48832 				_errHandler.sync(this);
48833 				_la = _input.LA(1);
48834 				while (_la==COMMA_) {
48835 					{
48836 					{
48837 					setState(6655);
48838 					match(COMMA_);
48839 					setState(6656);
48840 					setItem();
48841 					}
48842 					}
48843 					setState(6661);
48844 					_errHandler.sync(this);
48845 					_la = _input.LA(1);
48846 				}
48847 				}
48848 				break;
48849 			case FROM:
48850 				{
48851 				setState(6662);
48852 				match(FROM);
48853 				setState(6663);
48854 				match(EXTERNAL);
48855 				setState(6664);
48856 				match(PROVIDER);
48857 				}
48858 				break;
48859 			default:
48860 				throw new NoViableAltException(this);
48861 			}
48862 			}
48863 		}
48864 		catch (RecognitionException re) {
48865 			_localctx.exception = re;
48866 			_errHandler.reportError(this, re);
48867 			_errHandler.recover(this, re);
48868 		}
48869 		finally {
48870 			exitRule();
48871 		}
48872 		return _localctx;
48873 	}
48874 
48875 	public static class SetItemContext extends ParserRuleContext {
48876 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
48877 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
48878 		public TerminalNode EQ_(int i) {
48879 			return getToken(SQLServerStatementParser.EQ_, i);
48880 		}
48881 		public UserNameContext userName() {
48882 			return getRuleContext(UserNameContext.class,0);
48883 		}
48884 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48885 		public SchemaNameContext schemaName() {
48886 			return getRuleContext(SchemaNameContext.class,0);
48887 		}
48888 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
48889 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48890 		public IdentifierContext identifier() {
48891 			return getRuleContext(IdentifierContext.class,0);
48892 		}
48893 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
48894 		public List<StringLiteralsContext> stringLiterals() {
48895 			return getRuleContexts(StringLiteralsContext.class);
48896 		}
48897 		public StringLiteralsContext stringLiterals(int i) {
48898 			return getRuleContext(StringLiteralsContext.class,i);
48899 		}
48900 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
48901 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
48902 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
48903 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
48904 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
48905 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
48906 		public SetItemContext(ParserRuleContext parent, int invokingState) {
48907 			super(parent, invokingState);
48908 		}
48909 		@Override public int getRuleIndex() { return RULE_setItem; }
48910 		@Override
48911 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48912 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetItem(this);
48913 			else return visitor.visitChildren(this);
48914 		}
48915 	}
48916 
48917 	public final SetItemContext setItem() throws RecognitionException {
48918 		SetItemContext _localctx = new SetItemContext(_ctx, getState());
48919 		enterRule(_localctx, 914, RULE_setItem);
48920 		int _la;
48921 		try {
48922 			setState(6698);
48923 			_errHandler.sync(this);
48924 			switch (_input.LA(1)) {
48925 			case NAME:
48926 				enterOuterAlt(_localctx, 1);
48927 				{
48928 				setState(6667);
48929 				match(NAME);
48930 				setState(6668);
48931 				match(EQ_);
48932 				setState(6669);
48933 				userName();
48934 				}
48935 				break;
48936 			case DEFAULT_SCHEMA:
48937 				enterOuterAlt(_localctx, 2);
48938 				{
48939 				setState(6670);
48940 				match(DEFAULT_SCHEMA);
48941 				setState(6671);
48942 				match(EQ_);
48943 				setState(6674);
48944 				_errHandler.sync(this);
48945 				switch (_input.LA(1)) {
48946 				case TRUNCATE:
48947 				case SCHEMA:
48948 				case COLUMNS:
48949 				case PRECISION:
48950 				case FUNCTION:
48951 				case TRIGGER:
48952 				case CAST:
48953 				case SUBSTRING:
48954 				case OFF:
48955 				case GROUP:
48956 				case LIMIT:
48957 				case OFFSET:
48958 				case SAVEPOINT:
48959 				case BOOLEAN:
48960 				case ARRAY:
48961 				case DATE:
48962 				case LOCALTIME:
48963 				case LOCALTIMESTAMP:
48964 				case QUARTER:
48965 				case WEEK:
48966 				case DAY:
48967 				case SECOND:
48968 				case MICROSECOND:
48969 				case MAX:
48970 				case MIN:
48971 				case SUM:
48972 				case COUNT:
48973 				case AVG:
48974 				case ENABLE:
48975 				case DISABLE:
48976 				case INSTANCE:
48977 				case DO:
48978 				case DEFINER:
48979 				case SQL:
48980 				case CASCADED:
48981 				case LOCAL:
48982 				case NEXT:
48983 				case NAME:
48984 				case INTEGER:
48985 				case TYPE:
48986 				case TEXT:
48987 				case VIEWS:
48988 				case READ_ONLY:
48989 				case DATABASE:
48990 				case RETURNS:
48991 				case DATEPART:
48992 				case PASSWORD:
48993 				case BINARY:
48994 				case HIDDEN_:
48995 				case MOD:
48996 				case PARTITION:
48997 				case PARTITIONS:
48998 				case TOP:
48999 				case ROW:
49000 				case ROWS:
49001 				case XOR:
49002 				case ALWAYS:
49003 				case ROLE:
49004 				case START:
49005 				case ALGORITHM:
49006 				case AUTO:
49007 				case BLOCKERS:
49008 				case CLUSTERED:
49009 				case NONCLUSTERED:
49010 				case COLUMNSTORE:
49011 				case CONTENT:
49012 				case YEARS:
49013 				case MONTHS:
49014 				case WEEKS:
49015 				case DAYS:
49016 				case MINUTES:
49017 				case DENY:
49018 				case DETERMINISTIC:
49019 				case DISTRIBUTION:
49020 				case DOCUMENT:
49021 				case DURABILITY:
49022 				case ENCRYPTED:
49023 				case FILESTREAM:
49024 				case FILETABLE:
49025 				case FILLFACTOR:
49026 				case FOLLOWING:
49027 				case HASH:
49028 				case HEAP:
49029 				case INBOUND:
49030 				case OUTBOUND:
49031 				case UNBOUNDED:
49032 				case INFINITE:
49033 				case LOGIN:
49034 				case MASKED:
49035 				case MAXDOP:
49036 				case MOVE:
49037 				case NOCHECK:
49038 				case OBJECT:
49039 				case ONLINE:
49040 				case OVER:
49041 				case PAGE:
49042 				case PAUSED:
49043 				case PERIOD:
49044 				case PERSISTED:
49045 				case PRECEDING:
49046 				case RANDOMIZED:
49047 				case RANGE:
49048 				case REBUILD:
49049 				case REPLICATE:
49050 				case REPLICATION:
49051 				case RESUMABLE:
49052 				case ROWGUIDCOL:
49053 				case SAVE:
49054 				case SELF:
49055 				case SPARSE:
49056 				case SWITCH:
49057 				case TRAN:
49058 				case TRANCOUNT:
49059 				case CONTROL:
49060 				case CONCAT:
49061 				case TAKE:
49062 				case OWNERSHIP:
49063 				case DEFINITION:
49064 				case APPLICATION:
49065 				case ASSEMBLY:
49066 				case SYMMETRIC:
49067 				case ASYMMETRIC:
49068 				case SERVER:
49069 				case RECEIVE:
49070 				case CHANGE:
49071 				case TRACE:
49072 				case TRACKING:
49073 				case RESOURCES:
49074 				case SETTINGS:
49075 				case STATE:
49076 				case AVAILABILITY:
49077 				case CREDENTIAL:
49078 				case ENDPOINT:
49079 				case EVENT:
49080 				case NOTIFICATION:
49081 				case LINKED:
49082 				case AUDIT:
49083 				case DDL:
49084 				case XML:
49085 				case IMPERSONATE:
49086 				case SECURABLES:
49087 				case AUTHENTICATE:
49088 				case EXTERNAL:
49089 				case ACCESS:
49090 				case ADMINISTER:
49091 				case BULK:
49092 				case OPERATIONS:
49093 				case UNSAFE:
49094 				case SHUTDOWN:
49095 				case SCOPED:
49096 				case CONFIGURATION:
49097 				case DATASPACE:
49098 				case SERVICE:
49099 				case CERTIFICATE:
49100 				case CONTRACT:
49101 				case ENCRYPTION:
49102 				case MASTER:
49103 				case DATA:
49104 				case SOURCE:
49105 				case FILE:
49106 				case FORMAT:
49107 				case LIBRARY:
49108 				case FULLTEXT:
49109 				case MASK:
49110 				case UNMASK:
49111 				case MESSAGE:
49112 				case REMOTE:
49113 				case BINDING:
49114 				case ROUTE:
49115 				case SECURITY:
49116 				case POLICY:
49117 				case AGGREGATE:
49118 				case QUEUE:
49119 				case RULE:
49120 				case SYNONYM:
49121 				case COLLECTION:
49122 				case SCRIPT:
49123 				case KILL:
49124 				case BACKUP:
49125 				case LOG:
49126 				case SHOWPLAN:
49127 				case SUBSCRIBE:
49128 				case QUERY:
49129 				case NOTIFICATIONS:
49130 				case CHECKPOINT:
49131 				case SEQUENCE:
49132 				case ABORT_AFTER_WAIT:
49133 				case ALLOW_PAGE_LOCKS:
49134 				case ALLOW_ROW_LOCKS:
49135 				case ALL_SPARSE_COLUMNS:
49136 				case BUCKET_COUNT:
49137 				case COLUMNSTORE_ARCHIVE:
49138 				case COLUMN_ENCRYPTION_KEY:
49139 				case COLUMN_SET:
49140 				case COMPRESSION_DELAY:
49141 				case DATABASE_DEAULT:
49142 				case DATA_COMPRESSION:
49143 				case DATA_CONSISTENCY_CHECK:
49144 				case ENCRYPTION_TYPE:
49145 				case SYSTEM_TIME:
49146 				case SYSTEM_VERSIONING:
49147 				case TEXTIMAGE_ON:
49148 				case WAIT_AT_LOW_PRIORITY:
49149 				case STATISTICS_INCREMENTAL:
49150 				case STATISTICS_NORECOMPUTE:
49151 				case ROUND_ROBIN:
49152 				case SCHEMA_AND_DATA:
49153 				case SCHEMA_ONLY:
49154 				case SORT_IN_TEMPDB:
49155 				case IGNORE_DUP_KEY:
49156 				case IMPLICIT_TRANSACTIONS:
49157 				case MAX_DURATION:
49158 				case MEMORY_OPTIMIZED:
49159 				case MIGRATION_STATE:
49160 				case PAD_INDEX:
49161 				case REMOTE_DATA_ARCHIVE:
49162 				case FILESTREAM_ON:
49163 				case FILETABLE_COLLATE_FILENAME:
49164 				case FILETABLE_DIRECTORY:
49165 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49166 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49167 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49168 				case FILTER_PREDICATE:
49169 				case HISTORY_RETENTION_PERIOD:
49170 				case HISTORY_TABLE:
49171 				case LOCK_ESCALATION:
49172 				case DROP_EXISTING:
49173 				case ROW_NUMBER:
49174 				case FIRST:
49175 				case DATETIME2:
49176 				case OUTPUT:
49177 				case INSERTED:
49178 				case DELETED:
49179 				case FILENAME:
49180 				case MAXSIZE:
49181 				case FILEGROWTH:
49182 				case UNLIMITED:
49183 				case KB:
49184 				case MB:
49185 				case GB:
49186 				case TB:
49187 				case MEMORY_OPTIMIZED_DATA:
49188 				case FILEGROUP:
49189 				case NON_TRANSACTED_ACCESS:
49190 				case DB_CHAINING:
49191 				case TRUSTWORTHY:
49192 				case FORWARD_ONLY:
49193 				case KEYSET:
49194 				case FAST_FORWARD:
49195 				case SCROLL_LOCKS:
49196 				case OPTIMISTIC:
49197 				case TYPE_WARNING:
49198 				case SCHEMABINDING:
49199 				case CALLER:
49200 				case OWNER:
49201 				case SNAPSHOT:
49202 				case REPEATABLE:
49203 				case SERIALIZABLE:
49204 				case NATIVE_COMPILATION:
49205 				case VIEW_METADATA:
49206 				case INSTEAD:
49207 				case APPEND:
49208 				case INCREMENT:
49209 				case CACHE:
49210 				case MINVALUE:
49211 				case MAXVALUE:
49212 				case RESTART:
49213 				case LOB_COMPACTION:
49214 				case COMPRESS_ALL_ROW_GROUPS:
49215 				case REORGANIZE:
49216 				case RESUME:
49217 				case PAUSE:
49218 				case ABORT:
49219 				case ACCELERATED_DATABASE_RECOVERY:
49220 				case PERSISTENT_VERSION_STORE_FILEGROUP:
49221 				case IMMEDIATE:
49222 				case NO_WAIT:
49223 				case TARGET_RECOVERY_TIME:
49224 				case SECONDS:
49225 				case HONOR_BROKER_PRIORITY:
49226 				case ERROR_BROKER_CONVERSATIONS:
49227 				case NEW_BROKER:
49228 				case DISABLE_BROKER:
49229 				case ENABLE_BROKER:
49230 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49231 				case READ_COMMITTED_SNAPSHOT:
49232 				case ALLOW_SNAPSHOT_ISOLATION:
49233 				case RECURSIVE_TRIGGERS:
49234 				case QUOTED_IDENTIFIER:
49235 				case NUMERIC_ROUNDABORT:
49236 				case CONCAT_NULL_YIELDS_NULL:
49237 				case COMPATIBILITY_LEVEL:
49238 				case ARITHABORT:
49239 				case ANSI_WARNINGS:
49240 				case ANSI_PADDING:
49241 				case ANSI_NULLS:
49242 				case ANSI_NULL_DEFAULT:
49243 				case PAGE_VERIFY:
49244 				case CHECKSUM:
49245 				case TORN_PAGE_DETECTION:
49246 				case BULK_LOGGED:
49247 				case RECOVERY:
49248 				case TOTAL_EXECUTION_CPU_TIME_MS:
49249 				case TOTAL_COMPILE_CPU_TIME_MS:
49250 				case STALE_CAPTURE_POLICY_THRESHOLD:
49251 				case EXECUTION_COUNT:
49252 				case QUERY_CAPTURE_POLICY:
49253 				case WAIT_STATS_CAPTURE_MODE:
49254 				case MAX_PLANS_PER_QUERY:
49255 				case QUERY_CAPTURE_MODE:
49256 				case SIZE_BASED_CLEANUP_MODE:
49257 				case INTERVAL_LENGTH_MINUTES:
49258 				case MAX_STORAGE_SIZE_MB:
49259 				case DATA_FLUSH_INTERVAL_SECONDS:
49260 				case CLEANUP_POLICY:
49261 				case CUSTOM:
49262 				case STALE_QUERY_THRESHOLD_DAYS:
49263 				case OPERATION_MODE:
49264 				case QUERY_STORE:
49265 				case CURSOR_DEFAULT:
49266 				case GLOBAL:
49267 				case CURSOR_CLOSE_ON_COMMIT:
49268 				case HOURS:
49269 				case CHANGE_RETENTION:
49270 				case AUTO_CLEANUP:
49271 				case CHANGE_TRACKING:
49272 				case AUTOMATIC_TUNING:
49273 				case FORCE_LAST_GOOD_PLAN:
49274 				case AUTO_UPDATE_STATISTICS_ASYNC:
49275 				case AUTO_UPDATE_STATISTICS:
49276 				case AUTO_SHRINK:
49277 				case AUTO_CREATE_STATISTICS:
49278 				case INCREMENTAL:
49279 				case AUTO_CLOSE:
49280 				case DATA_RETENTION:
49281 				case TEMPORAL_HISTORY_RETENTION:
49282 				case EDITION:
49283 				case MIXED_PAGE_ALLOCATION:
49284 				case DISABLED:
49285 				case ALLOWED:
49286 				case HADR:
49287 				case MULTI_USER:
49288 				case RESTRICTED_USER:
49289 				case SINGLE_USER:
49290 				case OFFLINE:
49291 				case EMERGENCY:
49292 				case SUSPEND:
49293 				case DATE_CORRELATION_OPTIMIZATION:
49294 				case ELASTIC_POOL:
49295 				case SERVICE_OBJECTIVE:
49296 				case DATABASE_NAME:
49297 				case ALLOW_CONNECTIONS:
49298 				case GEO:
49299 				case NAMED:
49300 				case DATEFIRST:
49301 				case BACKUP_STORAGE_REDUNDANCY:
49302 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49303 				case SECONDARY:
49304 				case FAILOVER:
49305 				case DEFAULT_FULLTEXT_LANGUAGE:
49306 				case DEFAULT_LANGUAGE:
49307 				case INLINE:
49308 				case NESTED_TRIGGERS:
49309 				case TRANSFORM_NOISE_WORDS:
49310 				case TWO_DIGIT_YEAR_CUTOFF:
49311 				case PERSISTENT_LOG_BUFFER:
49312 				case DIRECTORY_NAME:
49313 				case DATEFORMAT:
49314 				case DELAYED_DURABILITY:
49315 				case AUTHORIZATION:
49316 				case TRANSFER:
49317 				case PROVIDER:
49318 				case SEARCH:
49319 				case MEMBER:
49320 				case IDENTIFIER_:
49321 				case DELIMITED_IDENTIFIER_:
49322 					{
49323 					setState(6672);
49324 					schemaName();
49325 					}
49326 					break;
49327 				case NULL:
49328 					{
49329 					setState(6673);
49330 					match(NULL);
49331 					}
49332 					break;
49333 				default:
49334 					throw new NoViableAltException(this);
49335 				}
49336 				}
49337 				break;
49338 			case LOGIN:
49339 				enterOuterAlt(_localctx, 3);
49340 				{
49341 				setState(6676);
49342 				match(LOGIN);
49343 				setState(6677);
49344 				match(EQ_);
49345 				setState(6678);
49346 				identifier();
49347 				}
49348 				break;
49349 			case PASSWORD:
49350 				enterOuterAlt(_localctx, 4);
49351 				{
49352 				setState(6679);
49353 				match(PASSWORD);
49354 				setState(6680);
49355 				match(EQ_);
49356 				setState(6681);
49357 				stringLiterals();
49358 				setState(6685);
49359 				_errHandler.sync(this);
49360 				_la = _input.LA(1);
49361 				if (_la==OLD_PASSWORD) {
49362 					{
49363 					setState(6682);
49364 					match(OLD_PASSWORD);
49365 					setState(6683);
49366 					match(EQ_);
49367 					setState(6684);
49368 					stringLiterals();
49369 					}
49370 				}
49371 
49372 				}
49373 				break;
49374 			case DEFAULT_LANGUAGE:
49375 				enterOuterAlt(_localctx, 5);
49376 				{
49377 				setState(6687);
49378 				match(DEFAULT_LANGUAGE);
49379 				setState(6688);
49380 				match(EQ_);
49381 				setState(6691);
49382 				_errHandler.sync(this);
49383 				switch (_input.LA(1)) {
49384 				case NONE:
49385 					{
49386 					setState(6689);
49387 					match(NONE);
49388 					}
49389 					break;
49390 				case TRUNCATE:
49391 				case SCHEMA:
49392 				case COLUMNS:
49393 				case PRECISION:
49394 				case FUNCTION:
49395 				case TRIGGER:
49396 				case CAST:
49397 				case SUBSTRING:
49398 				case OFF:
49399 				case GROUP:
49400 				case LIMIT:
49401 				case OFFSET:
49402 				case SAVEPOINT:
49403 				case BOOLEAN:
49404 				case ARRAY:
49405 				case DATE:
49406 				case LOCALTIME:
49407 				case LOCALTIMESTAMP:
49408 				case QUARTER:
49409 				case WEEK:
49410 				case DAY:
49411 				case SECOND:
49412 				case MICROSECOND:
49413 				case MAX:
49414 				case MIN:
49415 				case SUM:
49416 				case COUNT:
49417 				case AVG:
49418 				case ENABLE:
49419 				case DISABLE:
49420 				case INSTANCE:
49421 				case DO:
49422 				case DEFINER:
49423 				case SQL:
49424 				case CASCADED:
49425 				case LOCAL:
49426 				case NEXT:
49427 				case NAME:
49428 				case INTEGER:
49429 				case TYPE:
49430 				case TEXT:
49431 				case VIEWS:
49432 				case READ_ONLY:
49433 				case DATABASE:
49434 				case RETURNS:
49435 				case DATEPART:
49436 				case PASSWORD:
49437 				case BINARY:
49438 				case HIDDEN_:
49439 				case MOD:
49440 				case PARTITION:
49441 				case PARTITIONS:
49442 				case TOP:
49443 				case ROW:
49444 				case ROWS:
49445 				case XOR:
49446 				case ALWAYS:
49447 				case ROLE:
49448 				case START:
49449 				case ALGORITHM:
49450 				case AUTO:
49451 				case BLOCKERS:
49452 				case CLUSTERED:
49453 				case NONCLUSTERED:
49454 				case COLUMNSTORE:
49455 				case CONTENT:
49456 				case YEARS:
49457 				case MONTHS:
49458 				case WEEKS:
49459 				case DAYS:
49460 				case MINUTES:
49461 				case DENY:
49462 				case DETERMINISTIC:
49463 				case DISTRIBUTION:
49464 				case DOCUMENT:
49465 				case DURABILITY:
49466 				case ENCRYPTED:
49467 				case FILESTREAM:
49468 				case FILETABLE:
49469 				case FILLFACTOR:
49470 				case FOLLOWING:
49471 				case HASH:
49472 				case HEAP:
49473 				case INBOUND:
49474 				case OUTBOUND:
49475 				case UNBOUNDED:
49476 				case INFINITE:
49477 				case LOGIN:
49478 				case MASKED:
49479 				case MAXDOP:
49480 				case MOVE:
49481 				case NOCHECK:
49482 				case OBJECT:
49483 				case ONLINE:
49484 				case OVER:
49485 				case PAGE:
49486 				case PAUSED:
49487 				case PERIOD:
49488 				case PERSISTED:
49489 				case PRECEDING:
49490 				case RANDOMIZED:
49491 				case RANGE:
49492 				case REBUILD:
49493 				case REPLICATE:
49494 				case REPLICATION:
49495 				case RESUMABLE:
49496 				case ROWGUIDCOL:
49497 				case SAVE:
49498 				case SELF:
49499 				case SPARSE:
49500 				case SWITCH:
49501 				case TRAN:
49502 				case TRANCOUNT:
49503 				case CONTROL:
49504 				case CONCAT:
49505 				case TAKE:
49506 				case OWNERSHIP:
49507 				case DEFINITION:
49508 				case APPLICATION:
49509 				case ASSEMBLY:
49510 				case SYMMETRIC:
49511 				case ASYMMETRIC:
49512 				case SERVER:
49513 				case RECEIVE:
49514 				case CHANGE:
49515 				case TRACE:
49516 				case TRACKING:
49517 				case RESOURCES:
49518 				case SETTINGS:
49519 				case STATE:
49520 				case AVAILABILITY:
49521 				case CREDENTIAL:
49522 				case ENDPOINT:
49523 				case EVENT:
49524 				case NOTIFICATION:
49525 				case LINKED:
49526 				case AUDIT:
49527 				case DDL:
49528 				case XML:
49529 				case IMPERSONATE:
49530 				case SECURABLES:
49531 				case AUTHENTICATE:
49532 				case EXTERNAL:
49533 				case ACCESS:
49534 				case ADMINISTER:
49535 				case BULK:
49536 				case OPERATIONS:
49537 				case UNSAFE:
49538 				case SHUTDOWN:
49539 				case SCOPED:
49540 				case CONFIGURATION:
49541 				case DATASPACE:
49542 				case SERVICE:
49543 				case CERTIFICATE:
49544 				case CONTRACT:
49545 				case ENCRYPTION:
49546 				case MASTER:
49547 				case DATA:
49548 				case SOURCE:
49549 				case FILE:
49550 				case FORMAT:
49551 				case LIBRARY:
49552 				case FULLTEXT:
49553 				case MASK:
49554 				case UNMASK:
49555 				case MESSAGE:
49556 				case REMOTE:
49557 				case BINDING:
49558 				case ROUTE:
49559 				case SECURITY:
49560 				case POLICY:
49561 				case AGGREGATE:
49562 				case QUEUE:
49563 				case RULE:
49564 				case SYNONYM:
49565 				case COLLECTION:
49566 				case SCRIPT:
49567 				case KILL:
49568 				case BACKUP:
49569 				case LOG:
49570 				case SHOWPLAN:
49571 				case SUBSCRIBE:
49572 				case QUERY:
49573 				case NOTIFICATIONS:
49574 				case CHECKPOINT:
49575 				case SEQUENCE:
49576 				case ABORT_AFTER_WAIT:
49577 				case ALLOW_PAGE_LOCKS:
49578 				case ALLOW_ROW_LOCKS:
49579 				case ALL_SPARSE_COLUMNS:
49580 				case BUCKET_COUNT:
49581 				case COLUMNSTORE_ARCHIVE:
49582 				case COLUMN_ENCRYPTION_KEY:
49583 				case COLUMN_SET:
49584 				case COMPRESSION_DELAY:
49585 				case DATABASE_DEAULT:
49586 				case DATA_COMPRESSION:
49587 				case DATA_CONSISTENCY_CHECK:
49588 				case ENCRYPTION_TYPE:
49589 				case SYSTEM_TIME:
49590 				case SYSTEM_VERSIONING:
49591 				case TEXTIMAGE_ON:
49592 				case WAIT_AT_LOW_PRIORITY:
49593 				case STATISTICS_INCREMENTAL:
49594 				case STATISTICS_NORECOMPUTE:
49595 				case ROUND_ROBIN:
49596 				case SCHEMA_AND_DATA:
49597 				case SCHEMA_ONLY:
49598 				case SORT_IN_TEMPDB:
49599 				case IGNORE_DUP_KEY:
49600 				case IMPLICIT_TRANSACTIONS:
49601 				case MAX_DURATION:
49602 				case MEMORY_OPTIMIZED:
49603 				case MIGRATION_STATE:
49604 				case PAD_INDEX:
49605 				case REMOTE_DATA_ARCHIVE:
49606 				case FILESTREAM_ON:
49607 				case FILETABLE_COLLATE_FILENAME:
49608 				case FILETABLE_DIRECTORY:
49609 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49610 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49611 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49612 				case FILTER_PREDICATE:
49613 				case HISTORY_RETENTION_PERIOD:
49614 				case HISTORY_TABLE:
49615 				case LOCK_ESCALATION:
49616 				case DROP_EXISTING:
49617 				case ROW_NUMBER:
49618 				case FIRST:
49619 				case DATETIME2:
49620 				case OUTPUT:
49621 				case INSERTED:
49622 				case DELETED:
49623 				case FILENAME:
49624 				case MAXSIZE:
49625 				case FILEGROWTH:
49626 				case UNLIMITED:
49627 				case KB:
49628 				case MB:
49629 				case GB:
49630 				case TB:
49631 				case MEMORY_OPTIMIZED_DATA:
49632 				case FILEGROUP:
49633 				case NON_TRANSACTED_ACCESS:
49634 				case DB_CHAINING:
49635 				case TRUSTWORTHY:
49636 				case FORWARD_ONLY:
49637 				case KEYSET:
49638 				case FAST_FORWARD:
49639 				case SCROLL_LOCKS:
49640 				case OPTIMISTIC:
49641 				case TYPE_WARNING:
49642 				case SCHEMABINDING:
49643 				case CALLER:
49644 				case OWNER:
49645 				case SNAPSHOT:
49646 				case REPEATABLE:
49647 				case SERIALIZABLE:
49648 				case NATIVE_COMPILATION:
49649 				case VIEW_METADATA:
49650 				case INSTEAD:
49651 				case APPEND:
49652 				case INCREMENT:
49653 				case CACHE:
49654 				case MINVALUE:
49655 				case MAXVALUE:
49656 				case RESTART:
49657 				case LOB_COMPACTION:
49658 				case COMPRESS_ALL_ROW_GROUPS:
49659 				case REORGANIZE:
49660 				case RESUME:
49661 				case PAUSE:
49662 				case ABORT:
49663 				case ACCELERATED_DATABASE_RECOVERY:
49664 				case PERSISTENT_VERSION_STORE_FILEGROUP:
49665 				case IMMEDIATE:
49666 				case NO_WAIT:
49667 				case TARGET_RECOVERY_TIME:
49668 				case SECONDS:
49669 				case HONOR_BROKER_PRIORITY:
49670 				case ERROR_BROKER_CONVERSATIONS:
49671 				case NEW_BROKER:
49672 				case DISABLE_BROKER:
49673 				case ENABLE_BROKER:
49674 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49675 				case READ_COMMITTED_SNAPSHOT:
49676 				case ALLOW_SNAPSHOT_ISOLATION:
49677 				case RECURSIVE_TRIGGERS:
49678 				case QUOTED_IDENTIFIER:
49679 				case NUMERIC_ROUNDABORT:
49680 				case CONCAT_NULL_YIELDS_NULL:
49681 				case COMPATIBILITY_LEVEL:
49682 				case ARITHABORT:
49683 				case ANSI_WARNINGS:
49684 				case ANSI_PADDING:
49685 				case ANSI_NULLS:
49686 				case ANSI_NULL_DEFAULT:
49687 				case PAGE_VERIFY:
49688 				case CHECKSUM:
49689 				case TORN_PAGE_DETECTION:
49690 				case BULK_LOGGED:
49691 				case RECOVERY:
49692 				case TOTAL_EXECUTION_CPU_TIME_MS:
49693 				case TOTAL_COMPILE_CPU_TIME_MS:
49694 				case STALE_CAPTURE_POLICY_THRESHOLD:
49695 				case EXECUTION_COUNT:
49696 				case QUERY_CAPTURE_POLICY:
49697 				case WAIT_STATS_CAPTURE_MODE:
49698 				case MAX_PLANS_PER_QUERY:
49699 				case QUERY_CAPTURE_MODE:
49700 				case SIZE_BASED_CLEANUP_MODE:
49701 				case INTERVAL_LENGTH_MINUTES:
49702 				case MAX_STORAGE_SIZE_MB:
49703 				case DATA_FLUSH_INTERVAL_SECONDS:
49704 				case CLEANUP_POLICY:
49705 				case CUSTOM:
49706 				case STALE_QUERY_THRESHOLD_DAYS:
49707 				case OPERATION_MODE:
49708 				case QUERY_STORE:
49709 				case CURSOR_DEFAULT:
49710 				case GLOBAL:
49711 				case CURSOR_CLOSE_ON_COMMIT:
49712 				case HOURS:
49713 				case CHANGE_RETENTION:
49714 				case AUTO_CLEANUP:
49715 				case CHANGE_TRACKING:
49716 				case AUTOMATIC_TUNING:
49717 				case FORCE_LAST_GOOD_PLAN:
49718 				case AUTO_UPDATE_STATISTICS_ASYNC:
49719 				case AUTO_UPDATE_STATISTICS:
49720 				case AUTO_SHRINK:
49721 				case AUTO_CREATE_STATISTICS:
49722 				case INCREMENTAL:
49723 				case AUTO_CLOSE:
49724 				case DATA_RETENTION:
49725 				case TEMPORAL_HISTORY_RETENTION:
49726 				case EDITION:
49727 				case MIXED_PAGE_ALLOCATION:
49728 				case DISABLED:
49729 				case ALLOWED:
49730 				case HADR:
49731 				case MULTI_USER:
49732 				case RESTRICTED_USER:
49733 				case SINGLE_USER:
49734 				case OFFLINE:
49735 				case EMERGENCY:
49736 				case SUSPEND:
49737 				case DATE_CORRELATION_OPTIMIZATION:
49738 				case ELASTIC_POOL:
49739 				case SERVICE_OBJECTIVE:
49740 				case DATABASE_NAME:
49741 				case ALLOW_CONNECTIONS:
49742 				case GEO:
49743 				case NAMED:
49744 				case DATEFIRST:
49745 				case BACKUP_STORAGE_REDUNDANCY:
49746 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49747 				case SECONDARY:
49748 				case FAILOVER:
49749 				case DEFAULT_FULLTEXT_LANGUAGE:
49750 				case DEFAULT_LANGUAGE:
49751 				case INLINE:
49752 				case NESTED_TRIGGERS:
49753 				case TRANSFORM_NOISE_WORDS:
49754 				case TWO_DIGIT_YEAR_CUTOFF:
49755 				case PERSISTENT_LOG_BUFFER:
49756 				case DIRECTORY_NAME:
49757 				case DATEFORMAT:
49758 				case DELAYED_DURABILITY:
49759 				case AUTHORIZATION:
49760 				case TRANSFER:
49761 				case PROVIDER:
49762 				case SEARCH:
49763 				case MEMBER:
49764 				case IDENTIFIER_:
49765 				case DELIMITED_IDENTIFIER_:
49766 					{
49767 					setState(6690);
49768 					identifier();
49769 					}
49770 					break;
49771 				default:
49772 					throw new NoViableAltException(this);
49773 				}
49774 				}
49775 				break;
49776 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
49777 				enterOuterAlt(_localctx, 6);
49778 				{
49779 				setState(6693);
49780 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
49781 				setState(6694);
49782 				match(EQ_);
49783 				setState(6696);
49784 				_errHandler.sync(this);
49785 				_la = _input.LA(1);
49786 				if (_la==ON || _la==OFF) {
49787 					{
49788 					setState(6695);
49789 					_la = _input.LA(1);
49790 					if ( !(_la==ON || _la==OFF) ) {
49791 					_errHandler.recoverInline(this);
49792 					}
49793 					else {
49794 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49795 						_errHandler.reportMatch(this);
49796 						consume();
49797 					}
49798 					}
49799 				}
49800 
49801 				}
49802 				break;
49803 			default:
49804 				throw new NoViableAltException(this);
49805 			}
49806 		}
49807 		catch (RecognitionException re) {
49808 			_localctx.exception = re;
49809 			_errHandler.reportError(this, re);
49810 			_errHandler.recover(this, re);
49811 		}
49812 		finally {
49813 			exitRule();
49814 		}
49815 		return _localctx;
49816 	}
49817 
49818 	public static class CreateRoleContext extends ParserRuleContext {
49819 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
49820 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
49821 		public List<NameContext> name() {
49822 			return getRuleContexts(NameContext.class);
49823 		}
49824 		public NameContext name(int i) {
49825 			return getRuleContext(NameContext.class,i);
49826 		}
49827 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
49828 		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
49829 			super(parent, invokingState);
49830 		}
49831 		@Override public int getRuleIndex() { return RULE_createRole; }
49832 		@Override
49833 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49834 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRole(this);
49835 			else return visitor.visitChildren(this);
49836 		}
49837 	}
49838 
49839 	public final CreateRoleContext createRole() throws RecognitionException {
49840 		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
49841 		enterRule(_localctx, 916, RULE_createRole);
49842 		int _la;
49843 		try {
49844 			enterOuterAlt(_localctx, 1);
49845 			{
49846 			setState(6700);
49847 			match(CREATE);
49848 			setState(6701);
49849 			match(ROLE);
49850 			setState(6702);
49851 			name();
49852 			setState(6705);
49853 			_errHandler.sync(this);
49854 			_la = _input.LA(1);
49855 			if (_la==AUTHORIZATION) {
49856 				{
49857 				setState(6703);
49858 				match(AUTHORIZATION);
49859 				setState(6704);
49860 				name();
49861 				}
49862 			}
49863 
49864 			}
49865 		}
49866 		catch (RecognitionException re) {
49867 			_localctx.exception = re;
49868 			_errHandler.reportError(this, re);
49869 			_errHandler.recover(this, re);
49870 		}
49871 		finally {
49872 			exitRule();
49873 		}
49874 		return _localctx;
49875 	}
49876 
49877 	public static class DropRoleContext extends ParserRuleContext {
49878 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
49879 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
49880 		public NameContext name() {
49881 			return getRuleContext(NameContext.class,0);
49882 		}
49883 		public IfExistsContext ifExists() {
49884 			return getRuleContext(IfExistsContext.class,0);
49885 		}
49886 		public DropRoleContext(ParserRuleContext parent, int invokingState) {
49887 			super(parent, invokingState);
49888 		}
49889 		@Override public int getRuleIndex() { return RULE_dropRole; }
49890 		@Override
49891 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49892 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropRole(this);
49893 			else return visitor.visitChildren(this);
49894 		}
49895 	}
49896 
49897 	public final DropRoleContext dropRole() throws RecognitionException {
49898 		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
49899 		enterRule(_localctx, 918, RULE_dropRole);
49900 		int _la;
49901 		try {
49902 			enterOuterAlt(_localctx, 1);
49903 			{
49904 			setState(6707);
49905 			match(DROP);
49906 			setState(6708);
49907 			match(ROLE);
49908 			setState(6710);
49909 			_errHandler.sync(this);
49910 			_la = _input.LA(1);
49911 			if (_la==IF) {
49912 				{
49913 				setState(6709);
49914 				ifExists();
49915 				}
49916 			}
49917 
49918 			setState(6712);
49919 			name();
49920 			}
49921 		}
49922 		catch (RecognitionException re) {
49923 			_localctx.exception = re;
49924 			_errHandler.reportError(this, re);
49925 			_errHandler.recover(this, re);
49926 		}
49927 		finally {
49928 			exitRule();
49929 		}
49930 		return _localctx;
49931 	}
49932 
49933 	public static class AlterRoleContext extends ParserRuleContext {
49934 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
49935 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
49936 		public List<NameContext> name() {
49937 			return getRuleContexts(NameContext.class);
49938 		}
49939 		public NameContext name(int i) {
49940 			return getRuleContext(NameContext.class,i);
49941 		}
49942 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
49943 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
49944 		public PrincipalContext principal() {
49945 			return getRuleContext(PrincipalContext.class,0);
49946 		}
49947 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
49948 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49949 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
49950 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49951 		public AlterRoleContext(ParserRuleContext parent, int invokingState) {
49952 			super(parent, invokingState);
49953 		}
49954 		@Override public int getRuleIndex() { return RULE_alterRole; }
49955 		@Override
49956 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49957 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterRole(this);
49958 			else return visitor.visitChildren(this);
49959 		}
49960 	}
49961 
49962 	public final AlterRoleContext alterRole() throws RecognitionException {
49963 		AlterRoleContext _localctx = new AlterRoleContext(_ctx, getState());
49964 		enterRule(_localctx, 920, RULE_alterRole);
49965 		try {
49966 			enterOuterAlt(_localctx, 1);
49967 			{
49968 			setState(6714);
49969 			match(ALTER);
49970 			setState(6715);
49971 			match(ROLE);
49972 			setState(6716);
49973 			name();
49974 			setState(6727);
49975 			_errHandler.sync(this);
49976 			switch (_input.LA(1)) {
49977 			case ADD:
49978 				{
49979 				setState(6717);
49980 				match(ADD);
49981 				setState(6718);
49982 				match(MEMBER);
49983 				setState(6719);
49984 				principal();
49985 				}
49986 				break;
49987 			case DROP:
49988 				{
49989 				setState(6720);
49990 				match(DROP);
49991 				setState(6721);
49992 				match(MEMBER);
49993 				setState(6722);
49994 				principal();
49995 				}
49996 				break;
49997 			case WITH:
49998 				{
49999 				setState(6723);
50000 				match(WITH);
50001 				setState(6724);
50002 				match(NAME);
50003 				setState(6725);
50004 				match(EQ_);
50005 				setState(6726);
50006 				name();
50007 				}
50008 				break;
50009 			default:
50010 				throw new NoViableAltException(this);
50011 			}
50012 			}
50013 		}
50014 		catch (RecognitionException re) {
50015 			_localctx.exception = re;
50016 			_errHandler.reportError(this, re);
50017 			_errHandler.recover(this, re);
50018 		}
50019 		finally {
50020 			exitRule();
50021 		}
50022 		return _localctx;
50023 	}
50024 
50025 	public static class CreateLoginContext extends ParserRuleContext {
50026 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
50027 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50028 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50029 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50030 		}
50031 		public CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() {
50032 			return getRuleContext(CreateLoginForSQLServerClauseContext.class,0);
50033 		}
50034 		public CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() {
50035 			return getRuleContext(CreateLoginForAzureSQLDatabaseClauseContext.class,0);
50036 		}
50037 		public CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() {
50038 			return getRuleContext(CreateLoginForAzureManagedInstanceClauseContext.class,0);
50039 		}
50040 		public CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() {
50041 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsClauseContext.class,0);
50042 		}
50043 		public CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() {
50044 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemClauseContext.class,0);
50045 		}
50046 		public CreateLoginContext(ParserRuleContext parent, int invokingState) {
50047 			super(parent, invokingState);
50048 		}
50049 		@Override public int getRuleIndex() { return RULE_createLogin; }
50050 		@Override
50051 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50052 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLogin(this);
50053 			else return visitor.visitChildren(this);
50054 		}
50055 	}
50056 
50057 	public final CreateLoginContext createLogin() throws RecognitionException {
50058 		CreateLoginContext _localctx = new CreateLoginContext(_ctx, getState());
50059 		enterRule(_localctx, 922, RULE_createLogin);
50060 		try {
50061 			enterOuterAlt(_localctx, 1);
50062 			{
50063 			setState(6729);
50064 			match(CREATE);
50065 			setState(6730);
50066 			match(LOGIN);
50067 			setState(6731);
50068 			ignoredNameIdentifier();
50069 			setState(6737);
50070 			_errHandler.sync(this);
50071 			switch ( getInterpreter().adaptivePredict(_input,780,_ctx) ) {
50072 			case 1:
50073 				{
50074 				setState(6732);
50075 				createLoginForSQLServerClause();
50076 				}
50077 				break;
50078 			case 2:
50079 				{
50080 				setState(6733);
50081 				createLoginForAzureSQLDatabaseClause();
50082 				}
50083 				break;
50084 			case 3:
50085 				{
50086 				setState(6734);
50087 				createLoginForAzureManagedInstanceClause();
50088 				}
50089 				break;
50090 			case 4:
50091 				{
50092 				setState(6735);
50093 				createLoginForAzureSynapseAnalyticsClause();
50094 				}
50095 				break;
50096 			case 5:
50097 				{
50098 				setState(6736);
50099 				createLoginForAnalyticsPlatformSystemClause();
50100 				}
50101 				break;
50102 			}
50103 			}
50104 		}
50105 		catch (RecognitionException re) {
50106 			_localctx.exception = re;
50107 			_errHandler.reportError(this, re);
50108 			_errHandler.recover(this, re);
50109 		}
50110 		finally {
50111 			exitRule();
50112 		}
50113 		return _localctx;
50114 	}
50115 
50116 	public static class CreateLoginForSQLServerClauseContext extends ParserRuleContext {
50117 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50118 		public CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() {
50119 			return getRuleContext(CreateLoginForSQLServerOptionListContext.class,0);
50120 		}
50121 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50122 		public SourcesContext sources() {
50123 			return getRuleContext(SourcesContext.class,0);
50124 		}
50125 		public CreateLoginForSQLServerClauseContext(ParserRuleContext parent, int invokingState) {
50126 			super(parent, invokingState);
50127 		}
50128 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerClause; }
50129 		@Override
50130 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50131 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerClause(this);
50132 			else return visitor.visitChildren(this);
50133 		}
50134 	}
50135 
50136 	public final CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() throws RecognitionException {
50137 		CreateLoginForSQLServerClauseContext _localctx = new CreateLoginForSQLServerClauseContext(_ctx, getState());
50138 		enterRule(_localctx, 924, RULE_createLoginForSQLServerClause);
50139 		try {
50140 			setState(6743);
50141 			_errHandler.sync(this);
50142 			switch (_input.LA(1)) {
50143 			case WITH:
50144 				enterOuterAlt(_localctx, 1);
50145 				{
50146 				setState(6739);
50147 				match(WITH);
50148 				setState(6740);
50149 				createLoginForSQLServerOptionList();
50150 				}
50151 				break;
50152 			case FROM:
50153 				enterOuterAlt(_localctx, 2);
50154 				{
50155 				setState(6741);
50156 				match(FROM);
50157 				setState(6742);
50158 				sources();
50159 				}
50160 				break;
50161 			default:
50162 				throw new NoViableAltException(this);
50163 			}
50164 		}
50165 		catch (RecognitionException re) {
50166 			_localctx.exception = re;
50167 			_errHandler.reportError(this, re);
50168 			_errHandler.recover(this, re);
50169 		}
50170 		finally {
50171 			exitRule();
50172 		}
50173 		return _localctx;
50174 	}
50175 
50176 	public static class CreateLoginForSQLServerOptionListContext extends ParserRuleContext {
50177 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50178 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50179 		public StringLiteralsContext stringLiterals() {
50180 			return getRuleContext(StringLiteralsContext.class,0);
50181 		}
50182 		public HashedPasswordContext hashedPassword() {
50183 			return getRuleContext(HashedPasswordContext.class,0);
50184 		}
50185 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
50186 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
50187 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50188 		public TerminalNode COMMA_(int i) {
50189 			return getToken(SQLServerStatementParser.COMMA_, i);
50190 		}
50191 		public List<CreateLoginForSQLServerOptionListClauseContext> createLoginForSQLServerOptionListClause() {
50192 			return getRuleContexts(CreateLoginForSQLServerOptionListClauseContext.class);
50193 		}
50194 		public CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause(int i) {
50195 			return getRuleContext(CreateLoginForSQLServerOptionListClauseContext.class,i);
50196 		}
50197 		public CreateLoginForSQLServerOptionListContext(ParserRuleContext parent, int invokingState) {
50198 			super(parent, invokingState);
50199 		}
50200 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionList; }
50201 		@Override
50202 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50203 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionList(this);
50204 			else return visitor.visitChildren(this);
50205 		}
50206 	}
50207 
50208 	public final CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() throws RecognitionException {
50209 		CreateLoginForSQLServerOptionListContext _localctx = new CreateLoginForSQLServerOptionListContext(_ctx, getState());
50210 		enterRule(_localctx, 926, RULE_createLoginForSQLServerOptionList);
50211 		int _la;
50212 		try {
50213 			enterOuterAlt(_localctx, 1);
50214 			{
50215 			setState(6745);
50216 			match(PASSWORD);
50217 			setState(6746);
50218 			match(EQ_);
50219 			setState(6751);
50220 			_errHandler.sync(this);
50221 			switch (_input.LA(1)) {
50222 			case STRING_:
50223 			case NCHAR_TEXT:
50224 				{
50225 				setState(6747);
50226 				stringLiterals();
50227 				}
50228 				break;
50229 			case HEX_DIGIT_:
50230 				{
50231 				setState(6748);
50232 				hashedPassword();
50233 				setState(6749);
50234 				match(HASHED);
50235 				}
50236 				break;
50237 			default:
50238 				throw new NoViableAltException(this);
50239 			}
50240 			setState(6754);
50241 			_errHandler.sync(this);
50242 			_la = _input.LA(1);
50243 			if (_la==MUST_CHANGE) {
50244 				{
50245 				setState(6753);
50246 				match(MUST_CHANGE);
50247 				}
50248 			}
50249 
50250 			setState(6765);
50251 			_errHandler.sync(this);
50252 			_la = _input.LA(1);
50253 			if (_la==COMMA_) {
50254 				{
50255 				setState(6756);
50256 				match(COMMA_);
50257 				setState(6757);
50258 				createLoginForSQLServerOptionListClause();
50259 				setState(6762);
50260 				_errHandler.sync(this);
50261 				_la = _input.LA(1);
50262 				while (_la==COMMA_) {
50263 					{
50264 					{
50265 					setState(6758);
50266 					match(COMMA_);
50267 					setState(6759);
50268 					createLoginForSQLServerOptionListClause();
50269 					}
50270 					}
50271 					setState(6764);
50272 					_errHandler.sync(this);
50273 					_la = _input.LA(1);
50274 				}
50275 				}
50276 			}
50277 
50278 			}
50279 		}
50280 		catch (RecognitionException re) {
50281 			_localctx.exception = re;
50282 			_errHandler.reportError(this, re);
50283 			_errHandler.recover(this, re);
50284 		}
50285 		finally {
50286 			exitRule();
50287 		}
50288 		return _localctx;
50289 	}
50290 
50291 	public static class CreateLoginForSQLServerOptionListClauseContext extends ParserRuleContext {
50292 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50293 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50294 		public SidContext sid() {
50295 			return getRuleContext(SidContext.class,0);
50296 		}
50297 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50298 		public DatabaseNameContext databaseName() {
50299 			return getRuleContext(DatabaseNameContext.class,0);
50300 		}
50301 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50302 		public IdentifierContext identifier() {
50303 			return getRuleContext(IdentifierContext.class,0);
50304 		}
50305 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
50306 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
50307 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
50308 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
50309 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
50310 		public CreateLoginForSQLServerOptionListClauseContext(ParserRuleContext parent, int invokingState) {
50311 			super(parent, invokingState);
50312 		}
50313 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionListClause; }
50314 		@Override
50315 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50316 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionListClause(this);
50317 			else return visitor.visitChildren(this);
50318 		}
50319 	}
50320 
50321 	public final CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause() throws RecognitionException {
50322 		CreateLoginForSQLServerOptionListClauseContext _localctx = new CreateLoginForSQLServerOptionListClauseContext(_ctx, getState());
50323 		enterRule(_localctx, 928, RULE_createLoginForSQLServerOptionListClause);
50324 		int _la;
50325 		try {
50326 			setState(6785);
50327 			_errHandler.sync(this);
50328 			switch (_input.LA(1)) {
50329 			case SID:
50330 				enterOuterAlt(_localctx, 1);
50331 				{
50332 				setState(6767);
50333 				match(SID);
50334 				setState(6768);
50335 				match(EQ_);
50336 				setState(6769);
50337 				sid();
50338 				}
50339 				break;
50340 			case DEFAULT_DATABASE:
50341 				enterOuterAlt(_localctx, 2);
50342 				{
50343 				setState(6770);
50344 				match(DEFAULT_DATABASE);
50345 				setState(6771);
50346 				match(EQ_);
50347 				setState(6772);
50348 				databaseName();
50349 				}
50350 				break;
50351 			case DEFAULT_LANGUAGE:
50352 				enterOuterAlt(_localctx, 3);
50353 				{
50354 				setState(6773);
50355 				match(DEFAULT_LANGUAGE);
50356 				setState(6774);
50357 				match(EQ_);
50358 				setState(6775);
50359 				identifier();
50360 				}
50361 				break;
50362 			case CHECK_EXPIRATION:
50363 				enterOuterAlt(_localctx, 4);
50364 				{
50365 				setState(6776);
50366 				match(CHECK_EXPIRATION);
50367 				setState(6777);
50368 				match(EQ_);
50369 				setState(6778);
50370 				_la = _input.LA(1);
50371 				if ( !(_la==ON || _la==OFF) ) {
50372 				_errHandler.recoverInline(this);
50373 				}
50374 				else {
50375 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50376 					_errHandler.reportMatch(this);
50377 					consume();
50378 				}
50379 				}
50380 				break;
50381 			case CHECK_POLICY:
50382 				enterOuterAlt(_localctx, 5);
50383 				{
50384 				setState(6779);
50385 				match(CHECK_POLICY);
50386 				setState(6780);
50387 				match(EQ_);
50388 				setState(6781);
50389 				_la = _input.LA(1);
50390 				if ( !(_la==ON || _la==OFF) ) {
50391 				_errHandler.recoverInline(this);
50392 				}
50393 				else {
50394 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50395 					_errHandler.reportMatch(this);
50396 					consume();
50397 				}
50398 				}
50399 				break;
50400 			case CREDENTIAL:
50401 				enterOuterAlt(_localctx, 6);
50402 				{
50403 				setState(6782);
50404 				match(CREDENTIAL);
50405 				setState(6783);
50406 				match(EQ_);
50407 				setState(6784);
50408 				identifier();
50409 				}
50410 				break;
50411 			default:
50412 				throw new NoViableAltException(this);
50413 			}
50414 		}
50415 		catch (RecognitionException re) {
50416 			_localctx.exception = re;
50417 			_errHandler.reportError(this, re);
50418 			_errHandler.recover(this, re);
50419 		}
50420 		finally {
50421 			exitRule();
50422 		}
50423 		return _localctx;
50424 	}
50425 
50426 	public static class HashedPasswordContext extends ParserRuleContext {
50427 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
50428 		public HashedPasswordContext(ParserRuleContext parent, int invokingState) {
50429 			super(parent, invokingState);
50430 		}
50431 		@Override public int getRuleIndex() { return RULE_hashedPassword; }
50432 		@Override
50433 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50434 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashedPassword(this);
50435 			else return visitor.visitChildren(this);
50436 		}
50437 	}
50438 
50439 	public final HashedPasswordContext hashedPassword() throws RecognitionException {
50440 		HashedPasswordContext _localctx = new HashedPasswordContext(_ctx, getState());
50441 		enterRule(_localctx, 930, RULE_hashedPassword);
50442 		try {
50443 			enterOuterAlt(_localctx, 1);
50444 			{
50445 			setState(6787);
50446 			match(HEX_DIGIT_);
50447 			}
50448 		}
50449 		catch (RecognitionException re) {
50450 			_localctx.exception = re;
50451 			_errHandler.reportError(this, re);
50452 			_errHandler.recover(this, re);
50453 		}
50454 		finally {
50455 			exitRule();
50456 		}
50457 		return _localctx;
50458 	}
50459 
50460 	public static class SidContext extends ParserRuleContext {
50461 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
50462 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
50463 		public SidContext(ParserRuleContext parent, int invokingState) {
50464 			super(parent, invokingState);
50465 		}
50466 		@Override public int getRuleIndex() { return RULE_sid; }
50467 		@Override
50468 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50469 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSid(this);
50470 			else return visitor.visitChildren(this);
50471 		}
50472 	}
50473 
50474 	public final SidContext sid() throws RecognitionException {
50475 		SidContext _localctx = new SidContext(_ctx, getState());
50476 		enterRule(_localctx, 932, RULE_sid);
50477 		int _la;
50478 		try {
50479 			enterOuterAlt(_localctx, 1);
50480 			{
50481 			setState(6789);
50482 			_la = _input.LA(1);
50483 			if ( !(_la==HEX_DIGIT_ || _la==NCHAR_TEXT) ) {
50484 			_errHandler.recoverInline(this);
50485 			}
50486 			else {
50487 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50488 				_errHandler.reportMatch(this);
50489 				consume();
50490 			}
50491 			}
50492 		}
50493 		catch (RecognitionException re) {
50494 			_localctx.exception = re;
50495 			_errHandler.reportError(this, re);
50496 			_errHandler.recover(this, re);
50497 		}
50498 		finally {
50499 			exitRule();
50500 		}
50501 		return _localctx;
50502 	}
50503 
50504 	public static class SourcesContext extends ParserRuleContext {
50505 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
50506 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50507 		public List<WindowsOptionsContext> windowsOptions() {
50508 			return getRuleContexts(WindowsOptionsContext.class);
50509 		}
50510 		public WindowsOptionsContext windowsOptions(int i) {
50511 			return getRuleContext(WindowsOptionsContext.class,i);
50512 		}
50513 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50514 		public TerminalNode COMMA_(int i) {
50515 			return getToken(SQLServerStatementParser.COMMA_, i);
50516 		}
50517 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
50518 		public IdentifierContext identifier() {
50519 			return getRuleContext(IdentifierContext.class,0);
50520 		}
50521 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
50522 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
50523 		public SourcesContext(ParserRuleContext parent, int invokingState) {
50524 			super(parent, invokingState);
50525 		}
50526 		@Override public int getRuleIndex() { return RULE_sources; }
50527 		@Override
50528 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50529 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSources(this);
50530 			else return visitor.visitChildren(this);
50531 		}
50532 	}
50533 
50534 	public final SourcesContext sources() throws RecognitionException {
50535 		SourcesContext _localctx = new SourcesContext(_ctx, getState());
50536 		enterRule(_localctx, 934, RULE_sources);
50537 		int _la;
50538 		try {
50539 			setState(6808);
50540 			_errHandler.sync(this);
50541 			switch (_input.LA(1)) {
50542 			case WINDOWS:
50543 				enterOuterAlt(_localctx, 1);
50544 				{
50545 				setState(6791);
50546 				match(WINDOWS);
50547 				setState(6801);
50548 				_errHandler.sync(this);
50549 				_la = _input.LA(1);
50550 				if (_la==WITH) {
50551 					{
50552 					setState(6792);
50553 					match(WITH);
50554 					setState(6793);
50555 					windowsOptions();
50556 					setState(6798);
50557 					_errHandler.sync(this);
50558 					_la = _input.LA(1);
50559 					while (_la==COMMA_) {
50560 						{
50561 						{
50562 						setState(6794);
50563 						match(COMMA_);
50564 						setState(6795);
50565 						windowsOptions();
50566 						}
50567 						}
50568 						setState(6800);
50569 						_errHandler.sync(this);
50570 						_la = _input.LA(1);
50571 					}
50572 					}
50573 				}
50574 
50575 				}
50576 				break;
50577 			case CERTIFICATE:
50578 				enterOuterAlt(_localctx, 2);
50579 				{
50580 				setState(6803);
50581 				match(CERTIFICATE);
50582 				setState(6804);
50583 				identifier();
50584 				}
50585 				break;
50586 			case ASYMMETRIC:
50587 				enterOuterAlt(_localctx, 3);
50588 				{
50589 				setState(6805);
50590 				match(ASYMMETRIC);
50591 				setState(6806);
50592 				match(KEY);
50593 				setState(6807);
50594 				identifier();
50595 				}
50596 				break;
50597 			default:
50598 				throw new NoViableAltException(this);
50599 			}
50600 		}
50601 		catch (RecognitionException re) {
50602 			_localctx.exception = re;
50603 			_errHandler.reportError(this, re);
50604 			_errHandler.recover(this, re);
50605 		}
50606 		finally {
50607 			exitRule();
50608 		}
50609 		return _localctx;
50610 	}
50611 
50612 	public static class WindowsOptionsContext extends ParserRuleContext {
50613 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50614 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50615 		public DatabaseNameContext databaseName() {
50616 			return getRuleContext(DatabaseNameContext.class,0);
50617 		}
50618 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50619 		public IdentifierContext identifier() {
50620 			return getRuleContext(IdentifierContext.class,0);
50621 		}
50622 		public WindowsOptionsContext(ParserRuleContext parent, int invokingState) {
50623 			super(parent, invokingState);
50624 		}
50625 		@Override public int getRuleIndex() { return RULE_windowsOptions; }
50626 		@Override
50627 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50628 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsOptions(this);
50629 			else return visitor.visitChildren(this);
50630 		}
50631 	}
50632 
50633 	public final WindowsOptionsContext windowsOptions() throws RecognitionException {
50634 		WindowsOptionsContext _localctx = new WindowsOptionsContext(_ctx, getState());
50635 		enterRule(_localctx, 936, RULE_windowsOptions);
50636 		try {
50637 			setState(6816);
50638 			_errHandler.sync(this);
50639 			switch (_input.LA(1)) {
50640 			case DEFAULT_DATABASE:
50641 				enterOuterAlt(_localctx, 1);
50642 				{
50643 				setState(6810);
50644 				match(DEFAULT_DATABASE);
50645 				setState(6811);
50646 				match(EQ_);
50647 				setState(6812);
50648 				databaseName();
50649 				}
50650 				break;
50651 			case DEFAULT_LANGUAGE:
50652 				enterOuterAlt(_localctx, 2);
50653 				{
50654 				setState(6813);
50655 				match(DEFAULT_LANGUAGE);
50656 				setState(6814);
50657 				match(EQ_);
50658 				setState(6815);
50659 				identifier();
50660 				}
50661 				break;
50662 			default:
50663 				throw new NoViableAltException(this);
50664 			}
50665 		}
50666 		catch (RecognitionException re) {
50667 			_localctx.exception = re;
50668 			_errHandler.reportError(this, re);
50669 			_errHandler.recover(this, re);
50670 		}
50671 		finally {
50672 			exitRule();
50673 		}
50674 		return _localctx;
50675 	}
50676 
50677 	public static class CreateLoginForAzureSQLDatabaseClauseContext extends ParserRuleContext {
50678 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50679 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50680 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50681 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50682 		public List<CreateLoginForAzureSQLDatabaseOptionListContext> createLoginForAzureSQLDatabaseOptionList() {
50683 			return getRuleContexts(CreateLoginForAzureSQLDatabaseOptionListContext.class);
50684 		}
50685 		public CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList(int i) {
50686 			return getRuleContext(CreateLoginForAzureSQLDatabaseOptionListContext.class,i);
50687 		}
50688 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50689 		public TerminalNode COMMA_(int i) {
50690 			return getToken(SQLServerStatementParser.COMMA_, i);
50691 		}
50692 		public CreateLoginForAzureSQLDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
50693 			super(parent, invokingState);
50694 		}
50695 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseClause; }
50696 		@Override
50697 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50698 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseClause(this);
50699 			else return visitor.visitChildren(this);
50700 		}
50701 	}
50702 
50703 	public final CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() throws RecognitionException {
50704 		CreateLoginForAzureSQLDatabaseClauseContext _localctx = new CreateLoginForAzureSQLDatabaseClauseContext(_ctx, getState());
50705 		enterRule(_localctx, 938, RULE_createLoginForAzureSQLDatabaseClause);
50706 		int _la;
50707 		try {
50708 			setState(6830);
50709 			_errHandler.sync(this);
50710 			switch (_input.LA(1)) {
50711 			case FROM:
50712 				enterOuterAlt(_localctx, 1);
50713 				{
50714 				setState(6818);
50715 				match(FROM);
50716 				setState(6819);
50717 				match(EXTERNAL);
50718 				setState(6820);
50719 				match(PROVIDER);
50720 				}
50721 				break;
50722 			case WITH:
50723 				enterOuterAlt(_localctx, 2);
50724 				{
50725 				setState(6821);
50726 				match(WITH);
50727 				setState(6822);
50728 				createLoginForAzureSQLDatabaseOptionList();
50729 				setState(6827);
50730 				_errHandler.sync(this);
50731 				_la = _input.LA(1);
50732 				while (_la==COMMA_) {
50733 					{
50734 					{
50735 					setState(6823);
50736 					match(COMMA_);
50737 					setState(6824);
50738 					createLoginForAzureSQLDatabaseOptionList();
50739 					}
50740 					}
50741 					setState(6829);
50742 					_errHandler.sync(this);
50743 					_la = _input.LA(1);
50744 				}
50745 				}
50746 				break;
50747 			default:
50748 				throw new NoViableAltException(this);
50749 			}
50750 		}
50751 		catch (RecognitionException re) {
50752 			_localctx.exception = re;
50753 			_errHandler.reportError(this, re);
50754 			_errHandler.recover(this, re);
50755 		}
50756 		finally {
50757 			exitRule();
50758 		}
50759 		return _localctx;
50760 	}
50761 
50762 	public static class CreateLoginForAzureSQLDatabaseOptionListContext extends ParserRuleContext {
50763 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50764 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
50765 		public TerminalNode EQ_(int i) {
50766 			return getToken(SQLServerStatementParser.EQ_, i);
50767 		}
50768 		public StringLiteralsContext stringLiterals() {
50769 			return getRuleContext(StringLiteralsContext.class,0);
50770 		}
50771 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
50772 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50773 		public SidContext sid() {
50774 			return getRuleContext(SidContext.class,0);
50775 		}
50776 		public CreateLoginForAzureSQLDatabaseOptionListContext(ParserRuleContext parent, int invokingState) {
50777 			super(parent, invokingState);
50778 		}
50779 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseOptionList; }
50780 		@Override
50781 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50782 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseOptionList(this);
50783 			else return visitor.visitChildren(this);
50784 		}
50785 	}
50786 
50787 	public final CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList() throws RecognitionException {
50788 		CreateLoginForAzureSQLDatabaseOptionListContext _localctx = new CreateLoginForAzureSQLDatabaseOptionListContext(_ctx, getState());
50789 		enterRule(_localctx, 940, RULE_createLoginForAzureSQLDatabaseOptionList);
50790 		try {
50791 			enterOuterAlt(_localctx, 1);
50792 			{
50793 			setState(6832);
50794 			match(PASSWORD);
50795 			setState(6833);
50796 			match(EQ_);
50797 			setState(6834);
50798 			stringLiterals();
50799 			setState(6839);
50800 			_errHandler.sync(this);
50801 			switch ( getInterpreter().adaptivePredict(_input,793,_ctx) ) {
50802 			case 1:
50803 				{
50804 				setState(6835);
50805 				match(COMMA_);
50806 				setState(6836);
50807 				match(SID);
50808 				setState(6837);
50809 				match(EQ_);
50810 				setState(6838);
50811 				sid();
50812 				}
50813 				break;
50814 			}
50815 			}
50816 		}
50817 		catch (RecognitionException re) {
50818 			_localctx.exception = re;
50819 			_errHandler.reportError(this, re);
50820 			_errHandler.recover(this, re);
50821 		}
50822 		finally {
50823 			exitRule();
50824 		}
50825 		return _localctx;
50826 	}
50827 
50828 	public static class CreateLoginForAzureManagedInstanceClauseContext extends ParserRuleContext {
50829 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50830 		public List<AzureManagedInstanceOptionListContext> azureManagedInstanceOptionList() {
50831 			return getRuleContexts(AzureManagedInstanceOptionListContext.class);
50832 		}
50833 		public AzureManagedInstanceOptionListContext azureManagedInstanceOptionList(int i) {
50834 			return getRuleContext(AzureManagedInstanceOptionListContext.class,i);
50835 		}
50836 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50837 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50838 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50839 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50840 		public TerminalNode COMMA_(int i) {
50841 			return getToken(SQLServerStatementParser.COMMA_, i);
50842 		}
50843 		public CreateLoginForAzureManagedInstanceClauseContext(ParserRuleContext parent, int invokingState) {
50844 			super(parent, invokingState);
50845 		}
50846 		@Override public int getRuleIndex() { return RULE_createLoginForAzureManagedInstanceClause; }
50847 		@Override
50848 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50849 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureManagedInstanceClause(this);
50850 			else return visitor.visitChildren(this);
50851 		}
50852 	}
50853 
50854 	public final CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() throws RecognitionException {
50855 		CreateLoginForAzureManagedInstanceClauseContext _localctx = new CreateLoginForAzureManagedInstanceClauseContext(_ctx, getState());
50856 		enterRule(_localctx, 942, RULE_createLoginForAzureManagedInstanceClause);
50857 		int _la;
50858 		try {
50859 			enterOuterAlt(_localctx, 1);
50860 			{
50861 			setState(6844);
50862 			_errHandler.sync(this);
50863 			_la = _input.LA(1);
50864 			if (_la==FROM) {
50865 				{
50866 				setState(6841);
50867 				match(FROM);
50868 				setState(6842);
50869 				match(EXTERNAL);
50870 				setState(6843);
50871 				match(PROVIDER);
50872 				}
50873 			}
50874 
50875 			setState(6846);
50876 			match(WITH);
50877 			setState(6847);
50878 			azureManagedInstanceOptionList();
50879 			setState(6852);
50880 			_errHandler.sync(this);
50881 			_la = _input.LA(1);
50882 			while (_la==COMMA_) {
50883 				{
50884 				{
50885 				setState(6848);
50886 				match(COMMA_);
50887 				setState(6849);
50888 				azureManagedInstanceOptionList();
50889 				}
50890 				}
50891 				setState(6854);
50892 				_errHandler.sync(this);
50893 				_la = _input.LA(1);
50894 			}
50895 			}
50896 		}
50897 		catch (RecognitionException re) {
50898 			_localctx.exception = re;
50899 			_errHandler.reportError(this, re);
50900 			_errHandler.recover(this, re);
50901 		}
50902 		finally {
50903 			exitRule();
50904 		}
50905 		return _localctx;
50906 	}
50907 
50908 	public static class AzureManagedInstanceOptionListContext extends ParserRuleContext {
50909 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50910 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50911 		public StringLiteralsContext stringLiterals() {
50912 			return getRuleContext(StringLiteralsContext.class,0);
50913 		}
50914 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50915 		public SidContext sid() {
50916 			return getRuleContext(SidContext.class,0);
50917 		}
50918 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50919 		public DatabaseNameContext databaseName() {
50920 			return getRuleContext(DatabaseNameContext.class,0);
50921 		}
50922 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50923 		public IdentifierContext identifier() {
50924 			return getRuleContext(IdentifierContext.class,0);
50925 		}
50926 		public AzureManagedInstanceOptionListContext(ParserRuleContext parent, int invokingState) {
50927 			super(parent, invokingState);
50928 		}
50929 		@Override public int getRuleIndex() { return RULE_azureManagedInstanceOptionList; }
50930 		@Override
50931 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50932 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureManagedInstanceOptionList(this);
50933 			else return visitor.visitChildren(this);
50934 		}
50935 	}
50936 
50937 	public final AzureManagedInstanceOptionListContext azureManagedInstanceOptionList() throws RecognitionException {
50938 		AzureManagedInstanceOptionListContext _localctx = new AzureManagedInstanceOptionListContext(_ctx, getState());
50939 		enterRule(_localctx, 944, RULE_azureManagedInstanceOptionList);
50940 		try {
50941 			setState(6867);
50942 			_errHandler.sync(this);
50943 			switch (_input.LA(1)) {
50944 			case PASSWORD:
50945 				enterOuterAlt(_localctx, 1);
50946 				{
50947 				setState(6855);
50948 				match(PASSWORD);
50949 				setState(6856);
50950 				match(EQ_);
50951 				setState(6857);
50952 				stringLiterals();
50953 				}
50954 				break;
50955 			case SID:
50956 				enterOuterAlt(_localctx, 2);
50957 				{
50958 				setState(6858);
50959 				match(SID);
50960 				setState(6859);
50961 				match(EQ_);
50962 				setState(6860);
50963 				sid();
50964 				}
50965 				break;
50966 			case DEFAULT_DATABASE:
50967 				enterOuterAlt(_localctx, 3);
50968 				{
50969 				setState(6861);
50970 				match(DEFAULT_DATABASE);
50971 				setState(6862);
50972 				match(EQ_);
50973 				setState(6863);
50974 				databaseName();
50975 				}
50976 				break;
50977 			case DEFAULT_LANGUAGE:
50978 				enterOuterAlt(_localctx, 4);
50979 				{
50980 				setState(6864);
50981 				match(DEFAULT_LANGUAGE);
50982 				setState(6865);
50983 				match(EQ_);
50984 				setState(6866);
50985 				identifier();
50986 				}
50987 				break;
50988 			default:
50989 				throw new NoViableAltException(this);
50990 			}
50991 		}
50992 		catch (RecognitionException re) {
50993 			_localctx.exception = re;
50994 			_errHandler.reportError(this, re);
50995 			_errHandler.recover(this, re);
50996 		}
50997 		finally {
50998 			exitRule();
50999 		}
51000 		return _localctx;
51001 	}
51002 
51003 	public static class CreateLoginForAzureSynapseAnalyticsClauseContext extends ParserRuleContext {
51004 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51005 		public CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() {
51006 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsOptionListContext.class,0);
51007 		}
51008 		public CreateLoginForAzureSynapseAnalyticsClauseContext(ParserRuleContext parent, int invokingState) {
51009 			super(parent, invokingState);
51010 		}
51011 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsClause; }
51012 		@Override
51013 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51014 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsClause(this);
51015 			else return visitor.visitChildren(this);
51016 		}
51017 	}
51018 
51019 	public final CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() throws RecognitionException {
51020 		CreateLoginForAzureSynapseAnalyticsClauseContext _localctx = new CreateLoginForAzureSynapseAnalyticsClauseContext(_ctx, getState());
51021 		enterRule(_localctx, 946, RULE_createLoginForAzureSynapseAnalyticsClause);
51022 		try {
51023 			enterOuterAlt(_localctx, 1);
51024 			{
51025 			setState(6869);
51026 			match(WITH);
51027 			setState(6870);
51028 			createLoginForAzureSynapseAnalyticsOptionList();
51029 			}
51030 		}
51031 		catch (RecognitionException re) {
51032 			_localctx.exception = re;
51033 			_errHandler.reportError(this, re);
51034 			_errHandler.recover(this, re);
51035 		}
51036 		finally {
51037 			exitRule();
51038 		}
51039 		return _localctx;
51040 	}
51041 
51042 	public static class CreateLoginForAzureSynapseAnalyticsOptionListContext extends ParserRuleContext {
51043 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51044 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
51045 		public TerminalNode EQ_(int i) {
51046 			return getToken(SQLServerStatementParser.EQ_, i);
51047 		}
51048 		public StringLiteralsContext stringLiterals() {
51049 			return getRuleContext(StringLiteralsContext.class,0);
51050 		}
51051 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
51052 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
51053 		public SidContext sid() {
51054 			return getRuleContext(SidContext.class,0);
51055 		}
51056 		public CreateLoginForAzureSynapseAnalyticsOptionListContext(ParserRuleContext parent, int invokingState) {
51057 			super(parent, invokingState);
51058 		}
51059 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsOptionList; }
51060 		@Override
51061 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51062 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsOptionList(this);
51063 			else return visitor.visitChildren(this);
51064 		}
51065 	}
51066 
51067 	public final CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() throws RecognitionException {
51068 		CreateLoginForAzureSynapseAnalyticsOptionListContext _localctx = new CreateLoginForAzureSynapseAnalyticsOptionListContext(_ctx, getState());
51069 		enterRule(_localctx, 948, RULE_createLoginForAzureSynapseAnalyticsOptionList);
51070 		int _la;
51071 		try {
51072 			enterOuterAlt(_localctx, 1);
51073 			{
51074 			setState(6872);
51075 			match(PASSWORD);
51076 			setState(6873);
51077 			match(EQ_);
51078 			setState(6874);
51079 			stringLiterals();
51080 			setState(6879);
51081 			_errHandler.sync(this);
51082 			_la = _input.LA(1);
51083 			if (_la==COMMA_) {
51084 				{
51085 				setState(6875);
51086 				match(COMMA_);
51087 				setState(6876);
51088 				match(SID);
51089 				setState(6877);
51090 				match(EQ_);
51091 				setState(6878);
51092 				sid();
51093 				}
51094 			}
51095 
51096 			}
51097 		}
51098 		catch (RecognitionException re) {
51099 			_localctx.exception = re;
51100 			_errHandler.reportError(this, re);
51101 			_errHandler.recover(this, re);
51102 		}
51103 		finally {
51104 			exitRule();
51105 		}
51106 		return _localctx;
51107 	}
51108 
51109 	public static class CreateLoginForAnalyticsPlatformSystemClauseContext extends ParserRuleContext {
51110 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51111 		public CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() {
51112 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListContext.class,0);
51113 		}
51114 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
51115 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
51116 		public CreateLoginForAnalyticsPlatformSystemClauseContext(ParserRuleContext parent, int invokingState) {
51117 			super(parent, invokingState);
51118 		}
51119 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemClause; }
51120 		@Override
51121 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51122 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemClause(this);
51123 			else return visitor.visitChildren(this);
51124 		}
51125 	}
51126 
51127 	public final CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() throws RecognitionException {
51128 		CreateLoginForAnalyticsPlatformSystemClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemClauseContext(_ctx, getState());
51129 		enterRule(_localctx, 950, RULE_createLoginForAnalyticsPlatformSystemClause);
51130 		try {
51131 			setState(6885);
51132 			_errHandler.sync(this);
51133 			switch (_input.LA(1)) {
51134 			case WITH:
51135 				enterOuterAlt(_localctx, 1);
51136 				{
51137 				setState(6881);
51138 				match(WITH);
51139 				setState(6882);
51140 				createLoginForAnalyticsPlatformSystemOptionList();
51141 				}
51142 				break;
51143 			case FROM:
51144 				enterOuterAlt(_localctx, 2);
51145 				{
51146 				setState(6883);
51147 				match(FROM);
51148 				setState(6884);
51149 				match(WINDOWS);
51150 				}
51151 				break;
51152 			default:
51153 				throw new NoViableAltException(this);
51154 			}
51155 		}
51156 		catch (RecognitionException re) {
51157 			_localctx.exception = re;
51158 			_errHandler.reportError(this, re);
51159 			_errHandler.recover(this, re);
51160 		}
51161 		finally {
51162 			exitRule();
51163 		}
51164 		return _localctx;
51165 	}
51166 
51167 	public static class CreateLoginForAnalyticsPlatformSystemOptionListContext extends ParserRuleContext {
51168 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51169 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51170 		public StringLiteralsContext stringLiterals() {
51171 			return getRuleContext(StringLiteralsContext.class,0);
51172 		}
51173 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
51174 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51175 		public TerminalNode COMMA_(int i) {
51176 			return getToken(SQLServerStatementParser.COMMA_, i);
51177 		}
51178 		public List<CreateLoginForAnalyticsPlatformSystemOptionListClauseContext> createLoginForAnalyticsPlatformSystemOptionListClause() {
51179 			return getRuleContexts(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class);
51180 		}
51181 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause(int i) {
51182 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class,i);
51183 		}
51184 		public CreateLoginForAnalyticsPlatformSystemOptionListContext(ParserRuleContext parent, int invokingState) {
51185 			super(parent, invokingState);
51186 		}
51187 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionList; }
51188 		@Override
51189 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51190 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionList(this);
51191 			else return visitor.visitChildren(this);
51192 		}
51193 	}
51194 
51195 	public final CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() throws RecognitionException {
51196 		CreateLoginForAnalyticsPlatformSystemOptionListContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListContext(_ctx, getState());
51197 		enterRule(_localctx, 952, RULE_createLoginForAnalyticsPlatformSystemOptionList);
51198 		int _la;
51199 		try {
51200 			enterOuterAlt(_localctx, 1);
51201 			{
51202 			setState(6887);
51203 			match(PASSWORD);
51204 			setState(6888);
51205 			match(EQ_);
51206 			setState(6889);
51207 			stringLiterals();
51208 			setState(6891);
51209 			_errHandler.sync(this);
51210 			_la = _input.LA(1);
51211 			if (_la==MUST_CHANGE) {
51212 				{
51213 				setState(6890);
51214 				match(MUST_CHANGE);
51215 				}
51216 			}
51217 
51218 			setState(6902);
51219 			_errHandler.sync(this);
51220 			_la = _input.LA(1);
51221 			if (_la==COMMA_) {
51222 				{
51223 				setState(6893);
51224 				match(COMMA_);
51225 				setState(6894);
51226 				createLoginForAnalyticsPlatformSystemOptionListClause();
51227 				setState(6899);
51228 				_errHandler.sync(this);
51229 				_la = _input.LA(1);
51230 				while (_la==COMMA_) {
51231 					{
51232 					{
51233 					setState(6895);
51234 					match(COMMA_);
51235 					setState(6896);
51236 					createLoginForAnalyticsPlatformSystemOptionListClause();
51237 					}
51238 					}
51239 					setState(6901);
51240 					_errHandler.sync(this);
51241 					_la = _input.LA(1);
51242 				}
51243 				}
51244 			}
51245 
51246 			}
51247 		}
51248 		catch (RecognitionException re) {
51249 			_localctx.exception = re;
51250 			_errHandler.reportError(this, re);
51251 			_errHandler.recover(this, re);
51252 		}
51253 		finally {
51254 			exitRule();
51255 		}
51256 		return _localctx;
51257 	}
51258 
51259 	public static class CreateLoginForAnalyticsPlatformSystemOptionListClauseContext extends ParserRuleContext {
51260 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
51261 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51262 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
51263 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
51264 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
51265 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(ParserRuleContext parent, int invokingState) {
51266 			super(parent, invokingState);
51267 		}
51268 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionListClause; }
51269 		@Override
51270 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51271 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionListClause(this);
51272 			else return visitor.visitChildren(this);
51273 		}
51274 	}
51275 
51276 	public final CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause() throws RecognitionException {
51277 		CreateLoginForAnalyticsPlatformSystemOptionListClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(_ctx, getState());
51278 		enterRule(_localctx, 954, RULE_createLoginForAnalyticsPlatformSystemOptionListClause);
51279 		int _la;
51280 		try {
51281 			setState(6910);
51282 			_errHandler.sync(this);
51283 			switch (_input.LA(1)) {
51284 			case CHECK_EXPIRATION:
51285 				enterOuterAlt(_localctx, 1);
51286 				{
51287 				setState(6904);
51288 				match(CHECK_EXPIRATION);
51289 				setState(6905);
51290 				match(EQ_);
51291 				setState(6906);
51292 				_la = _input.LA(1);
51293 				if ( !(_la==ON || _la==OFF) ) {
51294 				_errHandler.recoverInline(this);
51295 				}
51296 				else {
51297 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51298 					_errHandler.reportMatch(this);
51299 					consume();
51300 				}
51301 				}
51302 				break;
51303 			case CHECK_POLICY:
51304 				enterOuterAlt(_localctx, 2);
51305 				{
51306 				setState(6907);
51307 				match(CHECK_POLICY);
51308 				setState(6908);
51309 				match(EQ_);
51310 				setState(6909);
51311 				_la = _input.LA(1);
51312 				if ( !(_la==ON || _la==OFF) ) {
51313 				_errHandler.recoverInline(this);
51314 				}
51315 				else {
51316 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51317 					_errHandler.reportMatch(this);
51318 					consume();
51319 				}
51320 				}
51321 				break;
51322 			default:
51323 				throw new NoViableAltException(this);
51324 			}
51325 		}
51326 		catch (RecognitionException re) {
51327 			_localctx.exception = re;
51328 			_errHandler.reportError(this, re);
51329 			_errHandler.recover(this, re);
51330 		}
51331 		finally {
51332 			exitRule();
51333 		}
51334 		return _localctx;
51335 	}
51336 
51337 	public static class DropLoginContext extends ParserRuleContext {
51338 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51339 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
51340 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
51341 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
51342 		}
51343 		public DropLoginContext(ParserRuleContext parent, int invokingState) {
51344 			super(parent, invokingState);
51345 		}
51346 		@Override public int getRuleIndex() { return RULE_dropLogin; }
51347 		@Override
51348 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51349 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropLogin(this);
51350 			else return visitor.visitChildren(this);
51351 		}
51352 	}
51353 
51354 	public final DropLoginContext dropLogin() throws RecognitionException {
51355 		DropLoginContext _localctx = new DropLoginContext(_ctx, getState());
51356 		enterRule(_localctx, 956, RULE_dropLogin);
51357 		try {
51358 			enterOuterAlt(_localctx, 1);
51359 			{
51360 			setState(6912);
51361 			match(DROP);
51362 			setState(6913);
51363 			match(LOGIN);
51364 			setState(6914);
51365 			ignoredNameIdentifier();
51366 			}
51367 		}
51368 		catch (RecognitionException re) {
51369 			_localctx.exception = re;
51370 			_errHandler.reportError(this, re);
51371 			_errHandler.recover(this, re);
51372 		}
51373 		finally {
51374 			exitRule();
51375 		}
51376 		return _localctx;
51377 	}
51378 
51379 	public static class AlterLoginContext extends ParserRuleContext {
51380 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
51381 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
51382 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
51383 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
51384 		}
51385 		public StatusOptionClauseContext statusOptionClause() {
51386 			return getRuleContext(StatusOptionClauseContext.class,0);
51387 		}
51388 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51389 		public List<SetOptionClauseContext> setOptionClause() {
51390 			return getRuleContexts(SetOptionClauseContext.class);
51391 		}
51392 		public SetOptionClauseContext setOptionClause(int i) {
51393 			return getRuleContext(SetOptionClauseContext.class,i);
51394 		}
51395 		public CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() {
51396 			return getRuleContext(CryptographicCredentialsOptionClauseContext.class,0);
51397 		}
51398 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51399 		public TerminalNode COMMA_(int i) {
51400 			return getToken(SQLServerStatementParser.COMMA_, i);
51401 		}
51402 		public AlterLoginContext(ParserRuleContext parent, int invokingState) {
51403 			super(parent, invokingState);
51404 		}
51405 		@Override public int getRuleIndex() { return RULE_alterLogin; }
51406 		@Override
51407 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51408 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterLogin(this);
51409 			else return visitor.visitChildren(this);
51410 		}
51411 	}
51412 
51413 	public final AlterLoginContext alterLogin() throws RecognitionException {
51414 		AlterLoginContext _localctx = new AlterLoginContext(_ctx, getState());
51415 		enterRule(_localctx, 958, RULE_alterLogin);
51416 		int _la;
51417 		try {
51418 			enterOuterAlt(_localctx, 1);
51419 			{
51420 			setState(6916);
51421 			match(ALTER);
51422 			setState(6917);
51423 			match(LOGIN);
51424 			setState(6918);
51425 			ignoredNameIdentifier();
51426 			setState(6930);
51427 			_errHandler.sync(this);
51428 			switch (_input.LA(1)) {
51429 			case ENABLE:
51430 			case DISABLE:
51431 				{
51432 				setState(6919);
51433 				statusOptionClause();
51434 				}
51435 				break;
51436 			case WITH:
51437 				{
51438 				setState(6920);
51439 				match(WITH);
51440 				setState(6921);
51441 				setOptionClause();
51442 				setState(6926);
51443 				_errHandler.sync(this);
51444 				_la = _input.LA(1);
51445 				while (_la==COMMA_) {
51446 					{
51447 					{
51448 					setState(6922);
51449 					match(COMMA_);
51450 					setState(6923);
51451 					setOptionClause();
51452 					}
51453 					}
51454 					setState(6928);
51455 					_errHandler.sync(this);
51456 					_la = _input.LA(1);
51457 				}
51458 				}
51459 				break;
51460 			case DROP:
51461 			case ADD:
51462 				{
51463 				setState(6929);
51464 				cryptographicCredentialsOptionClause();
51465 				}
51466 				break;
51467 			default:
51468 				throw new NoViableAltException(this);
51469 			}
51470 			}
51471 		}
51472 		catch (RecognitionException re) {
51473 			_localctx.exception = re;
51474 			_errHandler.reportError(this, re);
51475 			_errHandler.recover(this, re);
51476 		}
51477 		finally {
51478 			exitRule();
51479 		}
51480 		return _localctx;
51481 	}
51482 
51483 	public static class StatusOptionClauseContext extends ParserRuleContext {
51484 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
51485 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
51486 		public StatusOptionClauseContext(ParserRuleContext parent, int invokingState) {
51487 			super(parent, invokingState);
51488 		}
51489 		@Override public int getRuleIndex() { return RULE_statusOptionClause; }
51490 		@Override
51491 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51492 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatusOptionClause(this);
51493 			else return visitor.visitChildren(this);
51494 		}
51495 	}
51496 
51497 	public final StatusOptionClauseContext statusOptionClause() throws RecognitionException {
51498 		StatusOptionClauseContext _localctx = new StatusOptionClauseContext(_ctx, getState());
51499 		enterRule(_localctx, 960, RULE_statusOptionClause);
51500 		int _la;
51501 		try {
51502 			enterOuterAlt(_localctx, 1);
51503 			{
51504 			setState(6932);
51505 			_la = _input.LA(1);
51506 			if ( !(_la==ENABLE || _la==DISABLE) ) {
51507 			_errHandler.recoverInline(this);
51508 			}
51509 			else {
51510 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51511 				_errHandler.reportMatch(this);
51512 				consume();
51513 			}
51514 			}
51515 		}
51516 		catch (RecognitionException re) {
51517 			_localctx.exception = re;
51518 			_errHandler.reportError(this, re);
51519 			_errHandler.recover(this, re);
51520 		}
51521 		finally {
51522 			exitRule();
51523 		}
51524 		return _localctx;
51525 	}
51526 
51527 	public static class SetOptionClauseContext extends ParserRuleContext {
51528 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51529 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
51530 		public TerminalNode EQ_(int i) {
51531 			return getToken(SQLServerStatementParser.EQ_, i);
51532 		}
51533 		public List<StringLiteralsContext> stringLiterals() {
51534 			return getRuleContexts(StringLiteralsContext.class);
51535 		}
51536 		public StringLiteralsContext stringLiterals(int i) {
51537 			return getRuleContext(StringLiteralsContext.class,i);
51538 		}
51539 		public HashedPasswordContext hashedPassword() {
51540 			return getRuleContext(HashedPasswordContext.class,0);
51541 		}
51542 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
51543 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
51544 		public List<PasswordOptionClauseContext> passwordOptionClause() {
51545 			return getRuleContexts(PasswordOptionClauseContext.class);
51546 		}
51547 		public PasswordOptionClauseContext passwordOptionClause(int i) {
51548 			return getRuleContext(PasswordOptionClauseContext.class,i);
51549 		}
51550 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
51551 		public DatabaseNameContext databaseName() {
51552 			return getRuleContext(DatabaseNameContext.class,0);
51553 		}
51554 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
51555 		public IdentifierContext identifier() {
51556 			return getRuleContext(IdentifierContext.class,0);
51557 		}
51558 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
51559 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
51560 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
51561 		}
51562 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
51563 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
51564 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
51565 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
51566 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
51567 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
51568 		public SetOptionClauseContext(ParserRuleContext parent, int invokingState) {
51569 			super(parent, invokingState);
51570 		}
51571 		@Override public int getRuleIndex() { return RULE_setOptionClause; }
51572 		@Override
51573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetOptionClause(this);
51575 			else return visitor.visitChildren(this);
51576 		}
51577 	}
51578 
51579 	public final SetOptionClauseContext setOptionClause() throws RecognitionException {
51580 		SetOptionClauseContext _localctx = new SetOptionClauseContext(_ctx, getState());
51581 		enterRule(_localctx, 962, RULE_setOptionClause);
51582 		int _la;
51583 		try {
51584 			setState(6971);
51585 			_errHandler.sync(this);
51586 			switch (_input.LA(1)) {
51587 			case PASSWORD:
51588 				enterOuterAlt(_localctx, 1);
51589 				{
51590 				setState(6934);
51591 				match(PASSWORD);
51592 				setState(6935);
51593 				match(EQ_);
51594 				setState(6940);
51595 				_errHandler.sync(this);
51596 				switch (_input.LA(1)) {
51597 				case STRING_:
51598 				case NCHAR_TEXT:
51599 					{
51600 					setState(6936);
51601 					stringLiterals();
51602 					}
51603 					break;
51604 				case HEX_DIGIT_:
51605 					{
51606 					setState(6937);
51607 					hashedPassword();
51608 					setState(6938);
51609 					match(HASHED);
51610 					}
51611 					break;
51612 				default:
51613 					throw new NoViableAltException(this);
51614 				}
51615 				setState(6949);
51616 				_errHandler.sync(this);
51617 				switch (_input.LA(1)) {
51618 				case OLD_PASSWORD:
51619 					{
51620 					setState(6942);
51621 					match(OLD_PASSWORD);
51622 					setState(6943);
51623 					match(EQ_);
51624 					setState(6944);
51625 					stringLiterals();
51626 					}
51627 					break;
51628 				case MUST_CHANGE:
51629 				case UNLOCK:
51630 					{
51631 					setState(6945);
51632 					passwordOptionClause();
51633 					setState(6947);
51634 					_errHandler.sync(this);
51635 					_la = _input.LA(1);
51636 					if (_la==MUST_CHANGE || _la==UNLOCK) {
51637 						{
51638 						setState(6946);
51639 						passwordOptionClause();
51640 						}
51641 					}
51642 
51643 					}
51644 					break;
51645 				case EOF:
51646 				case COMMA_:
51647 				case SEMI_:
51648 					break;
51649 				default:
51650 					break;
51651 				}
51652 				}
51653 				break;
51654 			case DEFAULT_DATABASE:
51655 				enterOuterAlt(_localctx, 2);
51656 				{
51657 				setState(6951);
51658 				match(DEFAULT_DATABASE);
51659 				setState(6952);
51660 				match(EQ_);
51661 				setState(6953);
51662 				databaseName();
51663 				}
51664 				break;
51665 			case DEFAULT_LANGUAGE:
51666 				enterOuterAlt(_localctx, 3);
51667 				{
51668 				setState(6954);
51669 				match(DEFAULT_LANGUAGE);
51670 				setState(6955);
51671 				match(EQ_);
51672 				setState(6956);
51673 				identifier();
51674 				}
51675 				break;
51676 			case NAME:
51677 				enterOuterAlt(_localctx, 4);
51678 				{
51679 				setState(6957);
51680 				match(NAME);
51681 				setState(6958);
51682 				match(EQ_);
51683 				setState(6959);
51684 				ignoredNameIdentifier();
51685 				}
51686 				break;
51687 			case CHECK_POLICY:
51688 				enterOuterAlt(_localctx, 5);
51689 				{
51690 				setState(6960);
51691 				match(CHECK_POLICY);
51692 				setState(6961);
51693 				match(EQ_);
51694 				setState(6962);
51695 				_la = _input.LA(1);
51696 				if ( !(_la==ON || _la==OFF) ) {
51697 				_errHandler.recoverInline(this);
51698 				}
51699 				else {
51700 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51701 					_errHandler.reportMatch(this);
51702 					consume();
51703 				}
51704 				}
51705 				break;
51706 			case CHECK_EXPIRATION:
51707 				enterOuterAlt(_localctx, 6);
51708 				{
51709 				setState(6963);
51710 				match(CHECK_EXPIRATION);
51711 				setState(6964);
51712 				match(EQ_);
51713 				setState(6965);
51714 				_la = _input.LA(1);
51715 				if ( !(_la==ON || _la==OFF) ) {
51716 				_errHandler.recoverInline(this);
51717 				}
51718 				else {
51719 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51720 					_errHandler.reportMatch(this);
51721 					consume();
51722 				}
51723 				}
51724 				break;
51725 			case CREDENTIAL:
51726 				enterOuterAlt(_localctx, 7);
51727 				{
51728 				setState(6966);
51729 				match(CREDENTIAL);
51730 				setState(6967);
51731 				match(EQ_);
51732 				setState(6968);
51733 				identifier();
51734 				}
51735 				break;
51736 			case NO:
51737 				enterOuterAlt(_localctx, 8);
51738 				{
51739 				setState(6969);
51740 				match(NO);
51741 				setState(6970);
51742 				match(CREDENTIAL);
51743 				}
51744 				break;
51745 			default:
51746 				throw new NoViableAltException(this);
51747 			}
51748 		}
51749 		catch (RecognitionException re) {
51750 			_localctx.exception = re;
51751 			_errHandler.reportError(this, re);
51752 			_errHandler.recover(this, re);
51753 		}
51754 		finally {
51755 			exitRule();
51756 		}
51757 		return _localctx;
51758 	}
51759 
51760 	public static class PasswordOptionClauseContext extends ParserRuleContext {
51761 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
51762 		public TerminalNode UNLOCK() { return getToken(SQLServerStatementParser.UNLOCK, 0); }
51763 		public PasswordOptionClauseContext(ParserRuleContext parent, int invokingState) {
51764 			super(parent, invokingState);
51765 		}
51766 		@Override public int getRuleIndex() { return RULE_passwordOptionClause; }
51767 		@Override
51768 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51769 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPasswordOptionClause(this);
51770 			else return visitor.visitChildren(this);
51771 		}
51772 	}
51773 
51774 	public final PasswordOptionClauseContext passwordOptionClause() throws RecognitionException {
51775 		PasswordOptionClauseContext _localctx = new PasswordOptionClauseContext(_ctx, getState());
51776 		enterRule(_localctx, 964, RULE_passwordOptionClause);
51777 		int _la;
51778 		try {
51779 			enterOuterAlt(_localctx, 1);
51780 			{
51781 			setState(6973);
51782 			_la = _input.LA(1);
51783 			if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
51784 			_errHandler.recoverInline(this);
51785 			}
51786 			else {
51787 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51788 				_errHandler.reportMatch(this);
51789 				consume();
51790 			}
51791 			}
51792 		}
51793 		catch (RecognitionException re) {
51794 			_localctx.exception = re;
51795 			_errHandler.reportError(this, re);
51796 			_errHandler.recover(this, re);
51797 		}
51798 		finally {
51799 			exitRule();
51800 		}
51801 		return _localctx;
51802 	}
51803 
51804 	public static class CryptographicCredentialsOptionClauseContext extends ParserRuleContext {
51805 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
51806 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
51807 		public IdentifierContext identifier() {
51808 			return getRuleContext(IdentifierContext.class,0);
51809 		}
51810 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51811 		public CryptographicCredentialsOptionClauseContext(ParserRuleContext parent, int invokingState) {
51812 			super(parent, invokingState);
51813 		}
51814 		@Override public int getRuleIndex() { return RULE_cryptographicCredentialsOptionClause; }
51815 		@Override
51816 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51817 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCryptographicCredentialsOptionClause(this);
51818 			else return visitor.visitChildren(this);
51819 		}
51820 	}
51821 
51822 	public final CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() throws RecognitionException {
51823 		CryptographicCredentialsOptionClauseContext _localctx = new CryptographicCredentialsOptionClauseContext(_ctx, getState());
51824 		enterRule(_localctx, 966, RULE_cryptographicCredentialsOptionClause);
51825 		try {
51826 			setState(6981);
51827 			_errHandler.sync(this);
51828 			switch (_input.LA(1)) {
51829 			case ADD:
51830 				enterOuterAlt(_localctx, 1);
51831 				{
51832 				setState(6975);
51833 				match(ADD);
51834 				setState(6976);
51835 				match(CREDENTIAL);
51836 				setState(6977);
51837 				identifier();
51838 				}
51839 				break;
51840 			case DROP:
51841 				enterOuterAlt(_localctx, 2);
51842 				{
51843 				setState(6978);
51844 				match(DROP);
51845 				setState(6979);
51846 				match(CREDENTIAL);
51847 				setState(6980);
51848 				identifier();
51849 				}
51850 				break;
51851 			default:
51852 				throw new NoViableAltException(this);
51853 			}
51854 		}
51855 		catch (RecognitionException re) {
51856 			_localctx.exception = re;
51857 			_errHandler.reportError(this, re);
51858 			_errHandler.recover(this, re);
51859 		}
51860 		finally {
51861 			exitRule();
51862 		}
51863 		return _localctx;
51864 	}
51865 
51866 	public static class RevertContext extends ParserRuleContext {
51867 		public TerminalNode REVERT() { return getToken(SQLServerStatementParser.REVERT, 0); }
51868 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51869 		public TerminalNode COOKIE() { return getToken(SQLServerStatementParser.COOKIE, 0); }
51870 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51871 		public VariableNameContext variableName() {
51872 			return getRuleContext(VariableNameContext.class,0);
51873 		}
51874 		public RevertContext(ParserRuleContext parent, int invokingState) {
51875 			super(parent, invokingState);
51876 		}
51877 		@Override public int getRuleIndex() { return RULE_revert; }
51878 		@Override
51879 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51880 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevert(this);
51881 			else return visitor.visitChildren(this);
51882 		}
51883 	}
51884 
51885 	public final RevertContext revert() throws RecognitionException {
51886 		RevertContext _localctx = new RevertContext(_ctx, getState());
51887 		enterRule(_localctx, 968, RULE_revert);
51888 		int _la;
51889 		try {
51890 			enterOuterAlt(_localctx, 1);
51891 			{
51892 			setState(6983);
51893 			match(REVERT);
51894 			setState(6988);
51895 			_errHandler.sync(this);
51896 			_la = _input.LA(1);
51897 			if (_la==WITH) {
51898 				{
51899 				setState(6984);
51900 				match(WITH);
51901 				setState(6985);
51902 				match(COOKIE);
51903 				setState(6986);
51904 				match(EQ_);
51905 				setState(6987);
51906 				variableName();
51907 				}
51908 			}
51909 
51910 			}
51911 		}
51912 		catch (RecognitionException re) {
51913 			_localctx.exception = re;
51914 			_errHandler.reportError(this, re);
51915 			_errHandler.recover(this, re);
51916 		}
51917 		finally {
51918 			exitRule();
51919 		}
51920 		return _localctx;
51921 	}
51922 
51923 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
51924 		switch (ruleIndex) {
51925 		case 49:
51926 			return expr_sempred((ExprContext)_localctx, predIndex);
51927 		case 53:
51928 			return booleanPrimary_sempred((BooleanPrimaryContext)_localctx, predIndex);
51929 		case 56:
51930 			return bitExpr_sempred((BitExprContext)_localctx, predIndex);
51931 		case 57:
51932 			return simpleExpr_sempred((SimpleExprContext)_localctx, predIndex);
51933 		}
51934 		return true;
51935 	}
51936 	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
51937 		switch (predIndex) {
51938 		case 0:
51939 			return precpred(_ctx, 5);
51940 		case 1:
51941 			return precpred(_ctx, 4);
51942 		}
51943 		return true;
51944 	}
51945 	private boolean booleanPrimary_sempred(BooleanPrimaryContext _localctx, int predIndex) {
51946 		switch (predIndex) {
51947 		case 2:
51948 			return precpred(_ctx, 5);
51949 		case 3:
51950 			return precpred(_ctx, 4);
51951 		case 4:
51952 			return precpred(_ctx, 3);
51953 		case 5:
51954 			return precpred(_ctx, 2);
51955 		}
51956 		return true;
51957 	}
51958 	private boolean bitExpr_sempred(BitExprContext _localctx, int predIndex) {
51959 		switch (predIndex) {
51960 		case 6:
51961 			return precpred(_ctx, 11);
51962 		case 7:
51963 			return precpred(_ctx, 10);
51964 		case 8:
51965 			return precpred(_ctx, 9);
51966 		case 9:
51967 			return precpred(_ctx, 8);
51968 		case 10:
51969 			return precpred(_ctx, 7);
51970 		case 11:
51971 			return precpred(_ctx, 6);
51972 		case 12:
51973 			return precpred(_ctx, 5);
51974 		case 13:
51975 			return precpred(_ctx, 4);
51976 		case 14:
51977 			return precpred(_ctx, 3);
51978 		case 15:
51979 			return precpred(_ctx, 2);
51980 		}
51981 		return true;
51982 	}
51983 	private boolean simpleExpr_sempred(SimpleExprContext _localctx, int predIndex) {
51984 		switch (predIndex) {
51985 		case 16:
51986 			return precpred(_ctx, 7);
51987 		}
51988 		return true;
51989 	}
51990 
51991 	private static final String _serializedATNSegment0 =
51992 		"\u0004\u0001\u02be\u1b4f\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
51993 		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
51994 		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
51995 		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
51996 		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
51997 		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
51998 		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
51999 		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
52000 		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
52001 		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
52002 		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
52003 		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
52004 		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
52005 		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
52006 		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
52007 		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
52008 		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
52009 		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
52010 		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
52011 		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
52012 		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
52013 		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
52014 		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
52015 		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
52016 		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
52017 		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
52018 		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
52019 		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
52020 		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
52021 		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
52022 		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
52023 		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
52024 		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
52025 		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
52026 		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
52027 		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
52028 		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
52029 		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
52030 		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
52031 		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
52032 		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
52033 		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
52034 		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
52035 		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
52036 		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
52037 		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
52038 		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
52039 		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
52040 		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
52041 		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
52042 		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
52043 		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
52044 		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
52045 		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
52046 		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
52047 		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
52048 		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
52049 		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
52050 		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
52051 		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
52052 		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
52053 		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
52054 		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
52055 		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
52056 		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
52057 		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
52058 		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
52059 		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
52060 		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
52061 		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
52062 		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
52063 		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
52064 		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
52065 		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
52066 		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
52067 		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
52068 		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
52069 		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
52070 		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
52071 		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
52072 		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
52073 		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
52074 		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
52075 		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
52076 		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
52077 		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
52078 		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
52079 		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
52080 		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
52081 		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
52082 		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
52083 		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
52084 		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
52085 		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
52086 		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
52087 		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
52088 		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
52089 		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
52090 		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
52091 		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
52092 		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
52093 		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
52094 		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
52095 		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
52096 		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
52097 		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
52098 		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
52099 		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
52100 		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
52101 		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
52102 		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
52103 		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
52104 		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
52105 		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
52106 		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
52107 		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
52108 		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
52109 		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
52110 		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
52111 		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
52112 		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
52113 		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
52114 		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
52115 		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
52116 		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
52117 		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
52118 		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
52119 		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
52120 		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
52121 		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
52122 		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
52123 		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
52124 		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
52125 		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
52126 		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
52127 		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
52128 		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
52129 		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
52130 		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
52131 		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
52132 		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
52133 		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
52134 		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
52135 		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
52136 		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
52137 		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
52138 		"\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de\u0002\u01df\u0007"+
52139 		"\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1\u0002\u01e2\u0007"+
52140 		"\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4\u0001\u0000\u0001"+
52141 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52142 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52143 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52144 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52145 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52146 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52147 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52148 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52149 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
52150 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u0406\b\u0000\u0001"+
52151 		"\u0000\u0003\u0000\u0409\b\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
52152 		"\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
52153 		"\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u0419"+
52154 		"\b\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001"+
52155 		"\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0425"+
52156 		"\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u042b"+
52157 		"\b\u0005\u0003\u0005\u042d\b\u0005\u0003\u0005\u042f\b\u0005\u0001\u0006"+
52158 		"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0436\b\u0006"+
52159 		"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u043c\b\u0007"+
52160 		"\u0003\u0007\u043e\b\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
52161 		"\u0001\u0007\u0001\u0007\u0003\u0007\u0446\b\u0007\u0001\b\u0001\b\u0003"+
52162 		"\b\u044a\b\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0452"+
52163 		"\b\t\u0001\n\u0001\n\u0003\n\u0456\b\n\u0001\u000b\u0001\u000b\u0001\u000b"+
52164 		"\u0001\u000b\u0003\u000b\u045c\b\u000b\u0001\f\u0001\f\u0001\r\u0001\r"+
52165 		"\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0003\r\u0467\b\r\u0001\u000e"+
52166 		"\u0001\u000e\u0001\u000f\u0003\u000f\u046c\b\u000f\u0001\u000f\u0001\u000f"+
52167 		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
52168 		"\u0001\u0010\u0003\u0010\u0477\b\u0010\u0001\u0011\u0001\u0011\u0001\u0012"+
52169 		"\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015"+
52170 		"\u0001\u0015\u0003\u0015\u0483\b\u0015\u0001\u0016\u0001\u0016\u0003\u0016"+
52171 		"\u0487\b\u0016\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019"+
52172 		"\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b"+
52173 		"\u0003\u001b\u0494\b\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c"+
52174 		"\u0001\u001c\u0003\u001c\u049b\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+
52175 		"\u0003\u001c\u04a0\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d"+
52176 		"\u04a5\b\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e"+
52177 		"\u0003\u001e\u04ac\b\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f"+
52178 		"\u0001\u001f\u0003\u001f\u04b3\b\u001f\u0001\u001f\u0001\u001f\u0001 "+
52179 		"\u0001 \u0001 \u0001 \u0001 \u0003 \u04bc\b \u0001 \u0001 \u0001 \u0003"+
52180 		" \u04c1\b \u0003 \u04c3\b \u0001 \u0001 \u0001!\u0001!\u0001!\u0003!\u04ca"+
52181 		"\b!\u0001!\u0001!\u0001\"\u0001\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0003"+
52182 		"$\u04d5\b$\u0001$\u0001$\u0003$\u04d9\b$\u0001%\u0001%\u0001%\u0001%\u0001"+
52183 		"%\u0001&\u0001&\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0005(\u04e8"+
52184 		"\b(\n(\f(\u04eb\t(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0005)\u04f3"+
52185 		"\b)\n)\f)\u04f6\t)\u0001)\u0001)\u0001*\u0003*\u04fb\b*\u0001*\u0001*"+
52186 		"\u0001*\u0005*\u0500\b*\n*\f*\u0503\t*\u0001*\u0003*\u0506\b*\u0001+\u0001"+
52187 		"+\u0001,\u0001,\u0001-\u0001-\u0001.\u0001.\u0003.\u0510\b.\u0001/\u0001"+
52188 		"/\u0001/\u0001/\u0003/\u0516\b/\u0003/\u0518\b/\u0001/\u0001/\u00010\u0003"+
52189 		"0\u051d\b0\u00010\u00010\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+
52190 		"1\u00011\u00011\u00031\u052a\b1\u00011\u00011\u00011\u00011\u00011\u0001"+
52191 		"1\u00011\u00011\u00051\u0534\b1\n1\f1\u0537\t1\u00012\u00012\u00013\u0001"+
52192 		"3\u00014\u00014\u00015\u00015\u00015\u00015\u00015\u00015\u00035\u0545"+
52193 		"\b5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+
52194 		"5\u00015\u00015\u00015\u00055\u0554\b5\n5\f5\u0557\t5\u00016\u00016\u0001"+
52195 		"7\u00017\u00037\u055d\b7\u00017\u00017\u00017\u00017\u00017\u00037\u0564"+
52196 		"\b7\u00017\u00017\u00017\u00017\u00017\u00057\u056b\b7\n7\f7\u056e\t7"+
52197 		"\u00017\u00017\u00017\u00017\u00037\u0574\b7\u00017\u00017\u00017\u0001"+
52198 		"7\u00017\u00017\u00017\u00037\u057d\b7\u00017\u00017\u00017\u00017\u0003"+
52199 		"7\u0583\b7\u00017\u00037\u0586\b7\u00018\u00018\u00018\u00018\u00018\u0001"+
52200 		"8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+
52201 		"8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+
52202 		"8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00058\u05a9\b8\n8"+
52203 		"\f8\u05ac\t8\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
52204 		"9\u00039\u05b7\b9\u00019\u00019\u00019\u00019\u00059\u05bd\b9\n9\f9\u05c0"+
52205 		"\t9\u00019\u00019\u00019\u00039\u05c5\b9\u00019\u00019\u00019\u00019\u0001"+
52206 		"9\u00019\u00019\u00019\u00039\u05cf\b9\u00019\u00019\u00019\u00059\u05d4"+
52207 		"\b9\n9\f9\u05d7\t9\u0001:\u0001:\u0001:\u0003:\u05dc\b:\u0001;\u0001;"+
52208 		"\u0001;\u0003;\u05e1\b;\u0001;\u0001;\u0001;\u0005;\u05e6\b;\n;\f;\u05e9"+
52209 		"\t;\u0001;\u0003;\u05ec\b;\u0001;\u0001;\u0001<\u0001<\u0001=\u0001=\u0001"+
52210 		">\u0001>\u0001>\u0003>\u05f7\b>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001"+
52211 		"?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0003@\u0607"+
52212 		"\b@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001A\u0005A\u0610\bA\n"+
52213 		"A\fA\u0613\tA\u0001A\u0001A\u0003A\u0617\bA\u0001A\u0001A\u0001B\u0001"+
52214 		"B\u0001B\u0001B\u0001B\u0005B\u0620\bB\nB\fB\u0623\tB\u0001B\u0003B\u0626"+
52215 		"\bB\u0001B\u0001B\u0001C\u0001C\u0001C\u0003C\u062d\bC\u0001C\u0001C\u0001"+
52216 		"C\u0001C\u0001C\u0003C\u0634\bC\u0001D\u0001D\u0003D\u0638\bD\u0001D\u0004"+
52217 		"D\u063b\bD\u000bD\fD\u063c\u0001D\u0003D\u0640\bD\u0001D\u0001D\u0001"+
52218 		"E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001G\u0001G\u0001"+
52219 		"G\u0001G\u0003G\u0650\bG\u0001H\u0001H\u0001H\u0001H\u0001H\u0005H\u0657"+
52220 		"\bH\nH\fH\u065a\tH\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+
52221 		"H\u0001H\u0003H\u0665\bH\u0003H\u0667\bH\u0001I\u0001I\u0001I\u0003I\u066c"+
52222 		"\bI\u0001I\u0001I\u0003I\u0670\bI\u0001I\u0003I\u0673\bI\u0001J\u0001"+
52223 		"J\u0001J\u0003J\u0678\bJ\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+
52224 		"J\u0003J\u0681\bJ\u0001J\u0001J\u0001J\u0003J\u0686\bJ\u0001K\u0001K\u0001"+
52225 		"L\u0001L\u0001L\u0001L\u0003L\u068e\bL\u0001L\u0001L\u0001M\u0001M\u0001"+
52226 		"M\u0001M\u0001M\u0001M\u0001M\u0001M\u0003M\u069a\bM\u0001M\u0001M\u0001"+
52227 		"N\u0001N\u0001N\u0001N\u0001N\u0003N\u06a3\bN\u0001N\u0001N\u0001N\u0001"+
52228 		"N\u0003N\u06a9\bN\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0003P\u06b1"+
52229 		"\bP\u0001P\u0003P\u06b4\bP\u0001P\u0003P\u06b7\bP\u0001P\u0001P\u0001"+
52230 		"Q\u0001Q\u0001Q\u0001Q\u0001Q\u0005Q\u06c0\bQ\nQ\fQ\u06c3\tQ\u0001R\u0001"+
52231 		"R\u0001R\u0001S\u0001S\u0003S\u06ca\bS\u0001T\u0001T\u0001T\u0001T\u0001"+
52232 		"T\u0001U\u0001U\u0003U\u06d3\bU\u0001V\u0001V\u0001V\u0001V\u0001V\u0001"+
52233 		"V\u0003V\u06db\bV\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0003W\u06e3"+
52234 		"\bW\u0001X\u0001X\u0003X\u06e7\bX\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+
52235 		"Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0003Y\u06f4\bY\u0003Y\u06f6\bY\u0001"+
52236 		"Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0003[\u06ff\b[\u0001\\\u0001"+
52237 		"\\\u0001\\\u0001]\u0001]\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001"+
52238 		"_\u0001_\u0001_\u0001`\u0001`\u0001`\u0005`\u0712\b`\n`\f`\u0715\t`\u0001"+
52239 		"a\u0001a\u0003a\u0719\ba\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001"+
52240 		"c\u0001c\u0001c\u0001c\u0003c\u0725\bc\u0001c\u0001c\u0001c\u0001c\u0001"+
52241 		"c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0003d\u0732\bd\u0001e\u0001"+
52242 		"e\u0001f\u0001f\u0001f\u0005f\u0739\bf\nf\ff\u073c\tf\u0001g\u0001g\u0001"+
52243 		"h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0003i\u0748\bi\u0001"+
52244 		"j\u0001j\u0001k\u0001k\u0001l\u0001l\u0001m\u0001m\u0001n\u0001n\u0001"+
52245 		"o\u0001o\u0001o\u0001p\u0001p\u0001q\u0001q\u0003q\u075b\bq\u0001q\u0001"+
52246 		"q\u0001r\u0001r\u0001r\u0001r\u0001r\u0003r\u0764\br\u0001s\u0001s\u0003"+
52247 		"s\u0768\bs\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001"+
52248 		"u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001"+
52249 		"v\u0001v\u0001w\u0001w\u0001w\u0003w\u0781\bw\u0001w\u0001w\u0001w\u0001"+
52250 		"w\u0001w\u0001x\u0001x\u0001x\u0003x\u078b\bx\u0001x\u0001x\u0001x\u0001"+
52251 		"x\u0001x\u0001y\u0001y\u0001y\u0003y\u0795\by\u0001y\u0001y\u0001y\u0001"+
52252 		"y\u0001z\u0001z\u0001z\u0003z\u079e\bz\u0001z\u0001z\u0001z\u0001z\u0001"+
52253 		"z\u0001z\u0001{\u0001{\u0001{\u0001{\u0005{\u07aa\b{\n{\f{\u07ad\t{\u0001"+
52254 		"|\u0001|\u0001|\u0001|\u0001|\u0003|\u07b4\b|\u0001|\u0001|\u0001|\u0001"+
52255 		"|\u0003|\u07ba\b|\u0001}\u0001}\u0001}\u0001}\u0005}\u07c0\b}\n}\f}\u07c3"+
52256 		"\t}\u0001~\u0001~\u0001~\u0001~\u0001~\u0001~\u0005~\u07cb\b~\n~\f~\u07ce"+
52257 		"\t~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0003\u007f\u07d4"+
52258 		"\b\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001"+
52259 		"\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u07de\b\u0080\u0001\u0080\u0005"+
52260 		"\u0080\u07e1\b\u0080\n\u0080\f\u0080\u07e4\t\u0080\u0001\u0081\u0001\u0081"+
52261 		"\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082"+
52262 		"\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001\u0083"+
52263 		"\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084"+
52264 		"\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085"+
52265 		"\u0001\u0085\u0001\u0085\u0005\u0085\u0802\b\u0085\n\u0085\f\u0085\u0805"+
52266 		"\t\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001"+
52267 		"\u0086\u0003\u0086\u080d\b\u0086\u0001\u0086\u0003\u0086\u0810\b\u0086"+
52268 		"\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0003\u0087"+
52269 		"\u0817\b\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088"+
52270 		"\u0003\u0088\u081e\b\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089"+
52271 		"\u0001\u0089\u0003\u0089\u0825\b\u0089\u0001\u0089\u0001\u0089\u0001\u0089"+
52272 		"\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0003\u008a\u082e\b\u008a"+
52273 		"\u0001\u008a\u0001\u008a\u0001\u008a\u0005\u008a\u0833\b\u008a\n\u008a"+
52274 		"\f\u008a\u0836\t\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0003\u008b"+
52275 		"\u083b\b\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0005\u008b\u0840\b"+
52276 		"\u008b\n\u008b\f\u008b\u0843\t\u008b\u0001\u008c\u0001\u008c\u0001\u008c"+
52277 		"\u0003\u008c\u0848\b\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0005\u008c"+
52278 		"\u084d\b\u008c\n\u008c\f\u008c\u0850\t\u008c\u0001\u008d\u0001\u008d\u0001"+
52279 		"\u008d\u0003\u008d\u0855\b\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0005"+
52280 		"\u008d\u085a\b\u008d\n\u008d\f\u008d\u085d\t\u008d\u0001\u008e\u0001\u008e"+
52281 		"\u0001\u008e\u0003\u008e\u0862\b\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+
52282 		"\u0005\u008e\u0867\b\u008e\n\u008e\f\u008e\u086a\t\u008e\u0001\u008e\u0001"+
52283 		"\u008e\u0001\u008e\u0001\u008e\u0003\u008e\u0870\b\u008e\u0003\u008e\u0872"+
52284 		"\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0003\u008f\u0877\b\u008f"+
52285 		"\u0001\u008f\u0001\u008f\u0001\u008f\u0005\u008f\u087c\b\u008f\n\u008f"+
52286 		"\f\u008f\u087f\t\u008f\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+
52287 		"\u0001\u0091\u0001\u0091\u0001\u0091\u0003\u0091\u0888\b\u0091\u0001\u0091"+
52288 		"\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093"+
52289 		"\u0001\u0093\u0001\u0093\u0001\u0093\u0003\u0093\u0894\b\u0093\u0001\u0093"+
52290 		"\u0001\u0093\u0001\u0093\u0005\u0093\u0899\b\u0093\n\u0093\f\u0093\u089c"+
52291 		"\t\u0093\u0001\u0093\u0003\u0093\u089f\b\u0093\u0003\u0093\u08a1\b\u0093"+
52292 		"\u0001\u0093\u0003\u0093\u08a4\b\u0093\u0001\u0094\u0001\u0094\u0003\u0094"+
52293 		"\u08a8\b\u0094\u0001\u0094\u0003\u0094\u08ab\b\u0094\u0001\u0095\u0001"+
52294 		"\u0095\u0001\u0095\u0001\u0095\u0003\u0095\u08b1\b\u0095\u0001\u0095\u0001"+
52295 		"\u0095\u0001\u0095\u0003\u0095\u08b6\b\u0095\u0001\u0095\u0001\u0095\u0001"+
52296 		"\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0005\u0095\u08bf"+
52297 		"\b\u0095\n\u0095\f\u0095\u08c2\t\u0095\u0001\u0095\u0003\u0095\u08c5\b"+
52298 		"\u0095\u0003\u0095\u08c7\b\u0095\u0001\u0096\u0003\u0096\u08ca\b\u0096"+
52299 		"\u0001\u0096\u0004\u0096\u08cd\b\u0096\u000b\u0096\f\u0096\u08ce\u0001"+
52300 		"\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001"+
52301 		"\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001"+
52302 		"\u0097\u0003\u0097\u08de\b\u0097\u0001\u0098\u0001\u0098\u0003\u0098\u08e2"+
52303 		"\b\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001"+
52304 		"\u009a\u0001\u009a\u0001\u009a\u0005\u009a\u08ec\b\u009a\n\u009a\f\u009a"+
52305 		"\u08ef\t\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u08f3\b\u009a\u0001"+
52306 		"\u009a\u0001\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+
52307 		"\u009b\u0003\u009b\u08fc\b\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0005"+
52308 		"\u009c\u0901\b\u009c\n\u009c\f\u009c\u0904\t\u009c\u0001\u009c\u0001\u009c"+
52309 		"\u0003\u009c\u0908\b\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
52310 		"\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
52311 		"\u0001\u009d\u0001\u009d\u0001\u009d\u0003\u009d\u0917\b\u009d\u0001\u009d"+
52312 		"\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
52313 		"\u0001\u009d\u0003\u009d\u0921\b\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
52314 		"\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d"+
52315 		"\u0003\u009d\u092c\b\u009d\u0001\u009d\u0003\u009d\u092f\b\u009d\u0001"+
52316 		"\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+
52317 		"\u009d\u0001\u009d\u0005\u009d\u0939\b\u009d\n\u009d\f\u009d\u093c\t\u009d"+
52318 		"\u0001\u009d\u0003\u009d\u093f\b\u009d\u0001\u009e\u0001\u009e\u0001\u009e"+
52319 		"\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e"+
52320 		"\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009f"+
52321 		"\u0001\u009f\u0003\u009f\u0951\b\u009f\u0001\u009f\u0001\u009f\u0001\u009f"+
52322 		"\u0003\u009f\u0956\b\u009f\u0001\u00a0\u0001\u00a0\u0003\u00a0\u095a\b"+
52323 		"\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0003\u00a0\u095f\b\u00a0\u0001"+
52324 		"\u00a1\u0001\u00a1\u0003\u00a1\u0963\b\u00a1\u0001\u00a1\u0001\u00a1\u0001"+
52325 		"\u00a1\u0001\u00a1\u0001\u00a1\u0003\u00a1\u096a\b\u00a1\u0001\u00a1\u0005"+
52326 		"\u00a1\u096d\b\u00a1\n\u00a1\f\u00a1\u0970\t\u00a1\u0001\u00a2\u0001\u00a2"+
52327 		"\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2\u0977\b\u00a2\u0001\u00a2"+
52328 		"\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2"+
52329 		"\u0003\u00a2\u0980\b\u00a2\u0001\u00a3\u0001\u00a3\u0003\u00a3\u0984\b"+
52330 		"\u00a3\u0001\u00a3\u0001\u00a3\u0003\u00a3\u0988\b\u00a3\u0001\u00a4\u0003"+
52331 		"\u00a4\u098b\b\u00a4\u0001\u00a4\u0003\u00a4\u098e\b\u00a4\u0001\u00a4"+
52332 		"\u0003\u00a4\u0991\b\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6"+
52333 		"\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
52334 		"\u0005\u00a6\u099d\b\u00a6\n\u00a6\f\u00a6\u09a0\t\u00a6\u0001\u00a6\u0001"+
52335 		"\u00a6\u0003\u00a6\u09a4\b\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003"+
52336 		"\u00a7\u09a9\b\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+
52337 		"\u00a8\u0001\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001"+
52338 		"\u00aa\u0001\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003"+
52339 		"\u00ab\u09bb\b\u00ab\u0003\u00ab\u09bd\b\u00ab\u0001\u00ac\u0001\u00ac"+
52340 		"\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad"+
52341 		"\u0001\u00ad\u0003\u00ad\u09c8\b\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+
52342 		"\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0003\u00ad\u09d0\b\u00ad\u0001\u00ad"+
52343 		"\u0005\u00ad\u09d3\b\u00ad\n\u00ad\f\u00ad\u09d6\t\u00ad\u0001\u00ae\u0001"+
52344 		"\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0003\u00ae\u09de"+
52345 		"\b\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0003"+
52346 		"\u00af\u09e5\b\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003"+
52347 		"\u00b0\u09eb\b\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+
52348 		"\u00b1\u0001\u00b1\u0001\u00b1\u0003\u00b1\u09f4\b\u00b1\u0001\u00b1\u0003"+
52349 		"\u00b1\u09f7\b\u00b1\u0001\u00b1\u0003\u00b1\u09fa\b\u00b1\u0001\u00b1"+
52350 		"\u0003\u00b1\u09fd\b\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2"+
52351 		"\u0001\u00b2\u0005\u00b2\u0a04\b\u00b2\n\u00b2\f\u00b2\u0a07\t\u00b2\u0001"+
52352 		"\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0003\u00b3\u0a0e"+
52353 		"\b\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b5\u0001\u00b5\u0001"+
52354 		"\u00b5\u0001\u00b5\u0003\u00b5\u0a17\b\u00b5\u0001\u00b6\u0001\u00b6\u0001"+
52355 		"\u00b6\u0005\u00b6\u0a1c\b\u00b6\n\u00b6\f\u00b6\u0a1f\t\u00b6\u0003\u00b6"+
52356 		"\u0a21\b\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+
52357 		"\u0001\u00b7\u0003\u00b7\u0a29\b\u00b7\u0003\u00b7\u0a2b\b\u00b7\u0001"+
52358 		"\u00b7\u0003\u00b7\u0a2e\b\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001"+
52359 		"\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0003\u00b9\u0a38"+
52360 		"\b\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0003\u00b9\u0a3d\b\u00b9"+
52361 		"\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0a42\b\u00ba\u0001\u00bb"+
52362 		"\u0001\u00bb\u0003\u00bb\u0a46\b\u00bb\u0001\u00bc\u0003\u00bc\u0a49\b"+
52363 		"\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0a4d\b\u00bc\u0001\u00bc\u0003"+
52364 		"\u00bc\u0a50\b\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003\u00bd\u0a55"+
52365 		"\b\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00bf\u0001"+
52366 		"\u00bf\u0003\u00bf\u0a5d\b\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+
52367 		"\u00bf\u0001\u00bf\u0005\u00bf\u0a64\b\u00bf\n\u00bf\f\u00bf\u0a67\t\u00bf"+
52368 		"\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0"+
52369 		"\u0a6e\b\u00c0\u0001\u00c0\u0003\u00c0\u0a71\b\u00c0\u0001\u00c0\u0003"+
52370 		"\u00c0\u0a74\b\u00c0\u0001\u00c1\u0003\u00c1\u0a77\b\u00c1\u0001\u00c1"+
52371 		"\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0003\u00c1\u0a7d\b\u00c1\u0001\u00c1"+
52372 		"\u0001\u00c1\u0003\u00c1\u0a81\b\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
52373 		"\u0001\u00c2\u0005\u00c2\u0a87\b\u00c2\n\u00c2\f\u00c2\u0a8a\t\u00c2\u0001"+
52374 		"\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001"+
52375 		"\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001"+
52376 		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
52377 		"\u00c4\u0003\u00c4\u0a9f\b\u00c4\u0003\u00c4\u0aa1\b\u00c4\u0001\u00c5"+
52378 		"\u0001\u00c5\u0001\u00c5\u0003\u00c5\u0aa6\b\u00c5\u0003\u00c5\u0aa8\b"+
52379 		"\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0003"+
52380 		"\u00c5\u0aaf\b\u00c5\u0003\u00c5\u0ab1\b\u00c5\u0001\u00c5\u0001\u00c5"+
52381 		"\u0003\u00c5\u0ab5\b\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
52382 		"\u0005\u00c6\u0abb\b\u00c6\n\u00c6\f\u00c6\u0abe\t\u00c6\u0001\u00c6\u0001"+
52383 		"\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001"+
52384 		"\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0acb\b\u00c7\u0001"+
52385 		"\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001"+
52386 		"\u00c7\u0003\u00c7\u0ad4\b\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001"+
52387 		"\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001"+
52388 		"\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0ae3\b\u00c7\u0001"+
52389 		"\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0ae9\b\u00c7\u0001"+
52390 		"\u00c7\u0001\u00c7\u0003\u00c7\u0aed\b\u00c7\u0001\u00c7\u0001\u00c7\u0001"+
52391 		"\u00c7\u0001\u00c7\u0001\u00c7\u0003\u00c7\u0af4\b\u00c7\u0001\u00c8\u0001"+
52392 		"\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001"+
52393 		"\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c9\u0001"+
52394 		"\u00c9\u0001\u00c9\u0001\u00c9\u0005\u00c9\u0b06\b\u00c9\n\u00c9\f\u00c9"+
52395 		"\u0b09\t\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca"+
52396 		"\u0001\u00ca\u0003\u00ca\u0b11\b\u00ca\u0001\u00ca\u0003\u00ca\u0b14\b"+
52397 		"\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001"+
52398 		"\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc\u0001"+
52399 		"\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+
52400 		"\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u0b2a\b\u00cc\u0003\u00cc\u0b2c"+
52401 		"\b\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+
52402 		"\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0003\u00cd\u0b37\b\u00cd\u0001"+
52403 		"\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
52404 		"\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
52405 		"\u00ce\u0001\u00ce\u0003\u00ce\u0b47\b\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
52406 		"\u00ce\u0003\u00ce\u0b4c\b\u00ce\u0005\u00ce\u0b4e\b\u00ce\n\u00ce\f\u00ce"+
52407 		"\u0b51\t\u00ce\u0001\u00ce\u0001\u00ce\u0003\u00ce\u0b55\b\u00ce\u0001"+
52408 		"\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0003\u00cf\u0b5c"+
52409 		"\b\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001"+
52410 		"\u00cf\u0005\u00cf\u0b64\b\u00cf\n\u00cf\f\u00cf\u0b67\t\u00cf\u0001\u00cf"+
52411 		"\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0003\u00d0\u0b6d\b\u00d0\u0001\u00d0"+
52412 		"\u0003\u00d0\u0b70\b\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1"+
52413 		"\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0003\u00d1"+
52414 		"\u0b7b\b\u00d1\u0001\u00d2\u0001\u00d2\u0003\u00d2\u0b7f\b\u00d2\u0001"+
52415 		"\u00d2\u0001\u00d2\u0001\u00d2\u0003\u00d2\u0b84\b\u00d2\u0001\u00d3\u0001"+
52416 		"\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3\u0b8a\b\u00d3\u0001\u00d3\u0001"+
52417 		"\u00d3\u0001\u00d3\u0003\u00d3\u0b8f\b\u00d3\u0001\u00d3\u0003\u00d3\u0b92"+
52418 		"\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d5\u0001"+
52419 		"\u00d5\u0001\u00d5\u0005\u00d5\u0b9b\b\u00d5\n\u00d5\f\u00d5\u0b9e\t\u00d5"+
52420 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6"+
52421 		"\u0003\u00d6\u0ba6\b\u00d6\u0001\u00d7\u0001\u00d7\u0003\u00d7\u0baa\b"+
52422 		"\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001"+
52423 		"\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001"+
52424 		"\u00d8\u0001\u00d8\u0003\u00d8\u0bb9\b\u00d8\u0001\u00d9\u0001\u00d9\u0001"+
52425 		"\u00d9\u0001\u00d9\u0001\u00d9\u0003\u00d9\u0bc0\b\u00d9\u0001\u00d9\u0001"+
52426 		"\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+
52427 		"\u00da\u0001\u00da\u0001\u00da\u0003\u00da\u0bcc\b\u00da\u0001\u00da\u0003"+
52428 		"\u00da\u0bcf\b\u00da\u0001\u00da\u0001\u00da\u0003\u00da\u0bd3\b\u00da"+
52429 		"\u0001\u00da\u0001\u00da\u0003\u00da\u0bd7\b\u00da\u0001\u00db\u0001\u00db"+
52430 		"\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0003\u00db"+
52431 		"\u0be0\b\u00db\u0001\u00dc\u0003\u00dc\u0be3\b\u00dc\u0001\u00dc\u0003"+
52432 		"\u00dc\u0be6\b\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0005\u00dc\u0beb"+
52433 		"\b\u00dc\n\u00dc\f\u00dc\u0bee\t\u00dc\u0001\u00dd\u0001\u00dd\u0003\u00dd"+
52434 		"\u0bf2\b\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+
52435 		"\u0005\u00de\u0bf9\b\u00de\n\u00de\f\u00de\u0bfc\t\u00de\u0001\u00de\u0001"+
52436 		"\u00de\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001"+
52437 		"\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001"+
52438 		"\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u0c0f\b\u00df\u0003"+
52439 		"\u00df\u0c11\b\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0003"+
52440 		"\u00e1\u0c17\b\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0005\u00e1\u0c1c"+
52441 		"\b\u00e1\n\u00e1\f\u00e1\u0c1f\t\u00e1\u0001\u00e2\u0001\u00e2\u0003\u00e2"+
52442 		"\u0c23\b\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0005\u00e2\u0c28\b"+
52443 		"\u00e2\n\u00e2\f\u00e2\u0c2b\t\u00e2\u0001\u00e3\u0003\u00e3\u0c2e\b\u00e3"+
52444 		"\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0003\u00e3\u0c34\b\u00e3"+
52445 		"\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0003\u00e4\u0c3a\b\u00e4"+
52446 		"\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u0c3f\b\u00e5\u0001\u00e5"+
52447 		"\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u0c45\b\u00e5\u0001\u00e5"+
52448 		"\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u0c4c\b\u00e5"+
52449 		"\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0003\u00e6\u0c52\b\u00e6"+
52450 		"\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7"+
52451 		"\u0001\u00e7\u0003\u00e7\u0c5b\b\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8"+
52452 		"\u0001\u00e8\u0001\u00e8\u0003\u00e8\u0c62\b\u00e8\u0003\u00e8\u0c64\b"+
52453 		"\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0003\u00e9\u0c6a"+
52454 		"\b\u00e9\u0001\u00e9\u0003\u00e9\u0c6d\b\u00e9\u0001\u00e9\u0003\u00e9"+
52455 		"\u0c70\b\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0003\u00ea\u0c75\b"+
52456 		"\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0003"+
52457 		"\u00eb\u0c7c\b\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001"+
52458 		"\u00ec\u0001\u00ec\u0001\u00ec\u0003\u00ec\u0c85\b\u00ec\u0001\u00ed\u0001"+
52459 		"\u00ed\u0001\u00ed\u0003\u00ed\u0c8a\b\u00ed\u0001\u00ee\u0001\u00ee\u0001"+
52460 		"\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0003\u00ef\u0c93"+
52461 		"\b\u00ef\u0003\u00ef\u0c95\b\u00ef\u0001\u00f0\u0001\u00f0\u0001\u00f0"+
52462 		"\u0003\u00f0\u0c9a\b\u00f0\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1"+
52463 		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u0ca3\b\u00f1\u0003\u00f1"+
52464 		"\u0ca5\b\u00f1\u0001\u00f1\u0003\u00f1\u0ca8\b\u00f1\u0001\u00f2\u0001"+
52465 		"\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+
52466 		"\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+
52467 		"\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u0cba\b\u00f2\u0003\u00f2\u0cbc"+
52468 		"\b\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001"+
52469 		"\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u0cc6\b\u00f3\u0001\u00f3\u0001"+
52470 		"\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0ccd\b\u00f4\u0001"+
52471 		"\u00f4\u0003\u00f4\u0cd0\b\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0cd4"+
52472 		"\b\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0005\u00f4\u0cda"+
52473 		"\b\u00f4\n\u00f4\f\u00f4\u0cdd\t\u00f4\u0003\u00f4\u0cdf\b\u00f4\u0001"+
52474 		"\u00f5\u0001\u00f5\u0003\u00f5\u0ce3\b\u00f5\u0001\u00f5\u0001\u00f5\u0001"+
52475 		"\u00f5\u0005\u00f5\u0ce8\b\u00f5\n\u00f5\f\u00f5\u0ceb\t\u00f5\u0001\u00f5"+
52476 		"\u0001\u00f5\u0005\u00f5\u0cef\b\u00f5\n\u00f5\f\u00f5\u0cf2\t\u00f5\u0001"+
52477 		"\u00f5\u0001\u00f5\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0005"+
52478 		"\u00f6\u0cfa\b\u00f6\n\u00f6\f\u00f6\u0cfd\t\u00f6\u0001\u00f6\u0001\u00f6"+
52479 		"\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+
52480 		"\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+
52481 		"\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+
52482 		"\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0003\u00f6"+
52483 		"\u0d18\b\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7"+
52484 		"\u0001\u00f7\u0003\u00f7\u0d20\b\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f8"+
52485 		"\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8"+
52486 		"\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9"+
52487 		"\u0001\u00f9\u0003\u00f9\u0d32\b\u00f9\u0003\u00f9\u0d34\b\u00f9\u0001"+
52488 		"\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0003\u00f9\u0d3b"+
52489 		"\b\u00f9\u0001\u00f9\u0003\u00f9\u0d3e\b\u00f9\u0003\u00f9\u0d40\b\u00f9"+
52490 		"\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0003\u00f9"+
52491 		"\u0d47\b\u00f9\u0003\u00f9\u0d49\b\u00f9\u0001\u00fa\u0001\u00fa\u0001"+
52492 		"\u00fa\u0003\u00fa\u0d4e\b\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0005"+
52493 		"\u00fa\u0d53\b\u00fa\n\u00fa\f\u00fa\u0d56\t\u00fa\u0001\u00fb\u0001\u00fb"+
52494 		"\u0003\u00fb\u0d5a\b\u00fb\u0001\u00fb\u0003\u00fb\u0d5d\b\u00fb\u0001"+
52495 		"\u00fb\u0001\u00fb\u0003\u00fb\u0d61\b\u00fb\u0001\u00fc\u0001\u00fc\u0001"+
52496 		"\u00fc\u0001\u00fc\u0001\u00fc\u0005\u00fc\u0d68\b\u00fc\n\u00fc\f\u00fc"+
52497 		"\u0d6b\t\u00fc\u0003\u00fc\u0d6d\b\u00fc\u0001\u00fd\u0001\u00fd\u0001"+
52498 		"\u00fd\u0001\u00fd\u0005\u00fd\u0d73\b\u00fd\n\u00fd\f\u00fd\u0d76\t\u00fd"+
52499 		"\u0001\u00fd\u0003\u00fd\u0d79\b\u00fd\u0001\u00fe\u0001\u00fe\u0003\u00fe"+
52500 		"\u0d7d\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u0d82\b"+
52501 		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u0d87\b\u00fe\u0001"+
52502 		"\u00ff\u0001\u00ff\u0003\u00ff\u0d8b\b\u00ff\u0001\u00ff\u0001\u00ff\u0001"+
52503 		"\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0005\u0100\u0d94"+
52504 		"\b\u0100\n\u0100\f\u0100\u0d97\t\u0100\u0001\u0100\u0001\u0100\u0001\u0101"+
52505 		"\u0001\u0101\u0003\u0101\u0d9d\b\u0101\u0001\u0102\u0001\u0102\u0001\u0102"+
52506 		"\u0001\u0102\u0003\u0102\u0da3\b\u0102\u0001\u0102\u0001\u0102\u0003\u0102"+
52507 		"\u0da7\b\u0102\u0001\u0102\u0001\u0102\u0003\u0102\u0dab\b\u0102\u0001"+
52508 		"\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0003"+
52509 		"\u0102\u0db3\b\u0102\u0003\u0102\u0db5\b\u0102\u0001\u0102\u0003\u0102"+
52510 		"\u0db8\b\u0102\u0001\u0102\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103"+
52511 		"\u0003\u0103\u0dbf\b\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0003\u0103"+
52512 		"\u0dc4\b\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103"+
52513 		"\u0001\u0103\u0001\u0103\u0003\u0103\u0dcd\b\u0103\u0001\u0104\u0001\u0104"+
52514 		"\u0001\u0104\u0003\u0104\u0dd2\b\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+
52515 		"\u0001\u0104\u0005\u0104\u0dd8\b\u0104\n\u0104\f\u0104\u0ddb\t\u0104\u0001"+
52516 		"\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0003\u0104\u0de1\b\u0104\u0001"+
52517 		"\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0003"+
52518 		"\u0106\u0de9\b\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001"+
52519 		"\u0106\u0001\u0106\u0001\u0106\u0003\u0106\u0df2\b\u0106\u0001\u0106\u0001"+
52520 		"\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001"+
52521 		"\u0106\u0001\u0106\u0001\u0106\u0003\u0106\u0dfe\b\u0106\u0001\u0107\u0001"+
52522 		"\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001"+
52523 		"\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0005\u0107\u0e0c"+
52524 		"\b\u0107\n\u0107\f\u0107\u0e0f\t\u0107\u0003\u0107\u0e11\b\u0107\u0003"+
52525 		"\u0107\u0e13\b\u0107\u0001\u0108\u0003\u0108\u0e16\b\u0108\u0001\u0108"+
52526 		"\u0003\u0108\u0e19\b\u0108\u0001\u0108\u0003\u0108\u0e1c\b\u0108\u0001"+
52527 		"\u0108\u0003\u0108\u0e1f\b\u0108\u0001\u0109\u0001\u0109\u0001\u0109\u0001"+
52528 		"\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001"+
52529 		"\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001"+
52530 		"\u0109\u0003\u0109\u0e31\b\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0003"+
52531 		"\u010a\u0e36\b\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0003\u010a\u0e3b"+
52532 		"\b\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0003\u010a\u0e40\b\u010a"+
52533 		"\u0001\u010a\u0003\u010a\u0e43\b\u010a\u0005\u010a\u0e45\b\u010a\n\u010a"+
52534 		"\f\u010a\u0e48\t\u010a\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b"+
52535 		"\u0001\u010b\u0003\u010b\u0e4f\b\u010b\u0001\u010c\u0001\u010c\u0001\u010c"+
52536 		"\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0005\u010c"+
52537 		"\u0e59\b\u010c\n\u010c\f\u010c\u0e5c\t\u010c\u0003\u010c\u0e5e\b\u010c"+
52538 		"\u0001\u010c\u0003\u010c\u0e61\b\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+
52539 		"\u0001\u010c\u0001\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d"+
52540 		"\u0001\u010d\u0001\u010d\u0005\u010d\u0e6e\b\u010d\n\u010d\f\u010d\u0e71"+
52541 		"\t\u010d\u0003\u010d\u0e73\b\u010d\u0001\u010d\u0003\u010d\u0e76\b\u010d"+
52542 		"\u0001\u010d\u0001\u010d\u0003\u010d\u0e7a\b\u010d\u0001\u010d\u0001\u010d"+
52543 		"\u0003\u010d\u0e7e\b\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e"+
52544 		"\u0001\u010e\u0001\u010e\u0005\u010e\u0e86\b\u010e\n\u010e\f\u010e\u0e89"+
52545 		"\t\u010e\u0003\u010e\u0e8b\b\u010e\u0001\u010e\u0003\u010e\u0e8e\b\u010e"+
52546 		"\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010f"+
52547 		"\u0001\u010f\u0001\u010f\u0001\u010f\u0003\u010f\u0e99\b\u010f\u0001\u010f"+
52548 		"\u0005\u010f\u0e9c\b\u010f\n\u010f\f\u010f\u0e9f\t\u010f\u0001\u0110\u0005"+
52549 		"\u0110\u0ea2\b\u0110\n\u0110\f\u0110\u0ea5\t\u0110\u0001\u0111\u0003\u0111"+
52550 		"\u0ea8\b\u0111\u0001\u0111\u0003\u0111\u0eab\b\u0111\u0001\u0111\u0001"+
52551 		"\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001"+
52552 		"\u0111\u0001\u0111\u0003\u0111\u0eb6\b\u0111\u0001\u0111\u0003\u0111\u0eb9"+
52553 		"\b\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0003\u0111\u0ebe\b\u0111"+
52554 		"\u0003\u0111\u0ec0\b\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+
52555 		"\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+
52556 		"\u0003\u0112\u0ecc\b\u0112\u0001\u0112\u0003\u0112\u0ecf\b\u0112\u0001"+
52557 		"\u0113\u0001\u0113\u0001\u0113\u0005\u0113\u0ed4\b\u0113\n\u0113\f\u0113"+
52558 		"\u0ed7\t\u0113\u0003\u0113\u0ed9\b\u0113\u0001\u0114\u0001\u0114\u0003"+
52559 		"\u0114\u0edd\b\u0114\u0001\u0114\u0001\u0114\u0003\u0114\u0ee1\b\u0114"+
52560 		"\u0001\u0114\u0003\u0114\u0ee4\b\u0114\u0001\u0115\u0003\u0115\u0ee7\b"+
52561 		"\u0115\u0001\u0115\u0001\u0115\u0003\u0115\u0eeb\b\u0115\u0001\u0115\u0001"+
52562 		"\u0115\u0001\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0005"+
52563 		"\u0116\u0ef4\b\u0116\n\u0116\f\u0116\u0ef7\t\u0116\u0003\u0116\u0ef9\b"+
52564 		"\u0116\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0003"+
52565 		"\u0117\u0f00\b\u0117\u0001\u0118\u0003\u0118\u0f03\b\u0118\u0001\u0118"+
52566 		"\u0001\u0118\u0003\u0118\u0f07\b\u0118\u0001\u0118\u0001\u0118\u0001\u0118"+
52567 		"\u0001\u0118\u0001\u0118\u0003\u0118\u0f0e\b\u0118\u0001\u0118\u0001\u0118"+
52568 		"\u0001\u0118\u0003\u0118\u0f13\b\u0118\u0001\u0118\u0001\u0118\u0001\u0118"+
52569 		"\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0005\u0118\u0f1c\b\u0118"+
52570 		"\n\u0118\f\u0118\u0f1f\t\u0118\u0001\u0118\u0001\u0118\u0003\u0118\u0f23"+
52571 		"\b\u0118\u0003\u0118\u0f25\b\u0118\u0001\u0119\u0001\u0119\u0001\u0119"+
52572 		"\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119"+
52573 		"\u0001\u0119\u0001\u0119\u0003\u0119\u0f32\b\u0119\u0001\u0119\u0001\u0119"+
52574 		"\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119"+
52575 		"\u0001\u0119\u0003\u0119\u0f3d\b\u0119\u0001\u011a\u0001\u011a\u0001\u011a"+
52576 		"\u0001\u011a\u0005\u011a\u0f43\b\u011a\n\u011a\f\u011a\u0f46\t\u011a\u0003"+
52577 		"\u011a\u0f48\b\u011a\u0001\u011a\u0001\u011a\u0003\u011a\u0f4c\b\u011a"+
52578 		"\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0003\u011a\u0f52\b\u011a"+
52579 		"\u0001\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+
52580 		"\u0005\u011c\u0f5a\b\u011c\n\u011c\f\u011c\u0f5d\t\u011c\u0001\u011d\u0001"+
52581 		"\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0005\u011d\u0f64\b\u011d\n"+
52582 		"\u011d\f\u011d\u0f67\t\u011d\u0001\u011d\u0001\u011d\u0003\u011d\u0f6b"+
52583 		"\b\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001"+
52584 		"\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f77"+
52585 		"\b\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f7d"+
52586 		"\b\u011e\u0001\u011e\u0003\u011e\u0f80\b\u011e\u0001\u011e\u0003\u011e"+
52587 		"\u0f83\b\u011e\u0001\u011e\u0003\u011e\u0f86\b\u011e\u0001\u011e\u0003"+
52588 		"\u011e\u0f89\b\u011e\u0001\u011e\u0003\u011e\u0f8c\b\u011e\u0001\u011e"+
52589 		"\u0003\u011e\u0f8f\b\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f93\b"+
52590 		"\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f98\b\u011e\u0001"+
52591 		"\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f9f"+
52592 		"\b\u011e\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0003"+
52593 		"\u011f\u0fa6\b\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+
52594 		"\u0120\u0001\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001"+
52595 		"\u0121\u0003\u0121\u0fb3\b\u0121\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52596 		"\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52597 		"\u0122\u0003\u0122\u0fbf\b\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52598 		"\u0122\u0003\u0122\u0fc5\b\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52599 		"\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0003\u0122\u0fce\b\u0122\u0001"+
52600 		"\u0122\u0003\u0122\u0fd1\b\u0122\u0001\u0123\u0001\u0123\u0003\u0123\u0fd5"+
52601 		"\b\u0123\u0001\u0123\u0001\u0123\u0003\u0123\u0fd9\b\u0123\u0001\u0123"+
52602 		"\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0005\u0123\u0fe0\b\u0123"+
52603 		"\n\u0123\f\u0123\u0fe3\t\u0123\u0001\u0123\u0001\u0123\u0003\u0123\u0fe7"+
52604 		"\b\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001"+
52605 		"\u0123\u0001\u0123\u0003\u0123\u0ff0\b\u0123\u0003\u0123\u0ff2\b\u0123"+
52606 		"\u0001\u0123\u0001\u0123\u0001\u0123\u0003\u0123\u0ff7\b\u0123\u0003\u0123"+
52607 		"\u0ff9\b\u0123\u0001\u0124\u0001\u0124\u0001\u0124\u0005\u0124\u0ffe\b"+
52608 		"\u0124\n\u0124\f\u0124\u1001\t\u0124\u0001\u0125\u0001\u0125\u0001\u0125"+
52609 		"\u0001\u0125\u0001\u0125\u0001\u0125\u0005\u0125\u1009\b\u0125\n\u0125"+
52610 		"\f\u0125\u100c\t\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125"+
52611 		"\u0001\u0125\u0001\u0125\u0003\u0125\u1014\b\u0125\u0001\u0126\u0001\u0126"+
52612 		"\u0001\u0126\u0001\u0126\u0001\u0126\u0003\u0126\u101b\b\u0126\u0003\u0126"+
52613 		"\u101d\b\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126"+
52614 		"\u0005\u0126\u1024\b\u0126\n\u0126\f\u0126\u1027\t\u0126\u0001\u0126\u0001"+
52615 		"\u0126\u0003\u0126\u102b\b\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001"+
52616 		"\u0126\u0001\u0126\u0003\u0126\u1032\b\u0126\u0001\u0126\u0001\u0126\u0001"+
52617 		"\u0126\u0001\u0126\u0001\u0126\u0003\u0126\u1039\b\u0126\u0001\u0126\u0001"+
52618 		"\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001"+
52619 		"\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001"+
52620 		"\u0126\u0005\u0126\u1049\b\u0126\n\u0126\f\u0126\u104c\t\u0126\u0001\u0126"+
52621 		"\u0001\u0126\u0003\u0126\u1050\b\u0126\u0001\u0126\u0001\u0126\u0003\u0126"+
52622 		"\u1054\b\u0126\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52623 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52624 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52625 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52626 		"\u0001\u0127\u0001\u0127\u0003\u0127\u106f\b\u0127\u0001\u0127\u0003\u0127"+
52627 		"\u1072\b\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52628 		"\u0001\u0127\u0001\u0127\u0003\u0127\u107b\b\u0127\u0001\u0127\u0001\u0127"+
52629 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52630 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52631 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52632 		"\u0001\u0127\u0005\u0127\u1092\b\u0127\n\u0127\f\u0127\u1095\t\u0127\u0003"+
52633 		"\u0127\u1097\b\u0127\u0003\u0127\u1099\b\u0127\u0001\u0128\u0001\u0128"+
52634 		"\u0001\u0128\u0003\u0128\u109e\b\u0128\u0001\u0129\u0001\u0129\u0001\u0129"+
52635 		"\u0001\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u10a6\b\u0129\u0001\u012a"+
52636 		"\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+
52637 		"\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+
52638 		"\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+
52639 		"\u0003\u012a\u10bb\b\u012a\u0003\u012a\u10bd\b\u012a\u0001\u012b\u0001"+
52640 		"\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0003"+
52641 		"\u012b\u10c6\b\u012b\u0001\u012b\u0003\u012b\u10c9\b\u012b\u0001\u012c"+
52642 		"\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+
52643 		"\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0005\u012c\u10d6\b\u012c"+
52644 		"\n\u012c\f\u012c\u10d9\t\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u10dd"+
52645 		"\b\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0005"+
52646 		"\u012c\u10e4\b\u012c\n\u012c\f\u012c\u10e7\t\u012c\u0001\u012c\u0001\u012c"+
52647 		"\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+
52648 		"\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c"+
52649 		"\u0001\u012c\u0005\u012c\u10f8\b\u012c\n\u012c\f\u012c\u10fb\t\u012c\u0003"+
52650 		"\u012c\u10fd\b\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u1101\b\u012c"+
52651 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
52652 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u110d\b\u012d"+
52653 		"\u0003\u012d\u110f\b\u012d\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e"+
52654 		"\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e"+
52655 		"\u0001\u012e\u0003\u012e\u111c\b\u012e\u0003\u012e\u111e\b\u012e\u0001"+
52656 		"\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001"+
52657 		"\u012f\u0001\u012f\u0003\u012f\u1128\b\u012f\u0001\u0130\u0001\u0130\u0001"+
52658 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52659 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52660 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52661 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52662 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52663 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52664 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0003\u0130\u1155"+
52665 		"\b\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u115b"+
52666 		"\b\u0131\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+
52667 		"\u0132\u0001\u0132\u0003\u0132\u1164\b\u0132\u0001\u0132\u0001\u0132\u0001"+
52668 		"\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+
52669 		"\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0003\u0132\u1173"+
52670 		"\b\u0132\u0001\u0133\u0001\u0133\u0003\u0133\u1177\b\u0133\u0001\u0134"+
52671 		"\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0005\u0134\u117e\b\u0134"+
52672 		"\n\u0134\f\u0134\u1181\t\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0003"+
52673 		"\u0134\u1186\b\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+
52674 		"\u0134\u0001\u0134\u0005\u0134\u118e\b\u0134\n\u0134\f\u0134\u1191\t\u0134"+
52675 		"\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+
52676 		"\u0003\u0134\u1199\b\u0134\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
52677 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0003\u0135"+
52678 		"\u11a4\b\u0135\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
52679 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0003\u0136"+
52680 		"\u11b0\b\u0136\u0003\u0136\u11b2\b\u0136\u0001\u0136\u0001\u0136\u0001"+
52681 		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u11ba\b\u0136\u0001"+
52682 		"\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001"+
52683 		"\u0137\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0003"+
52684 		"\u0138\u11c8\b\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0005"+
52685 		"\u0138\u11ce\b\u0138\n\u0138\f\u0138\u11d1\t\u0138\u0001\u0138\u0001\u0138"+
52686 		"\u0003\u0138\u11d5\b\u0138\u0003\u0138\u11d7\b\u0138\u0001\u0139\u0001"+
52687 		"\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0003"+
52688 		"\u0139\u11e0\b\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0003"+
52689 		"\u013a\u11e6\b\u013a\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+
52690 		"\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+
52691 		"\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+
52692 		"\u013b\u0001\u013b\u0001\u013b\u0003\u013b\u11fb\b\u013b\u0001\u013c\u0001"+
52693 		"\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0003\u013c\u1202\b\u013c\u0001"+
52694 		"\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0005\u013c\u1208\b\u013c\n"+
52695 		"\u013c\f\u013c\u120b\t\u013c\u0001\u013c\u0001\u013c\u0003\u013c\u120f"+
52696 		"\b\u013c\u0003\u013c\u1211\b\u013c\u0001\u013d\u0001\u013d\u0001\u013d"+
52697 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
52698 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
52699 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
52700 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
52701 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
52702 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0005\u013d\u1238\b\u013d"+
52703 		"\n\u013d\f\u013d\u123b\t\u013d\u0001\u013d\u0001\u013d\u0003\u013d\u123f"+
52704 		"\b\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
52705 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
52706 		"\u013e\u0001\u013e\u0003\u013e\u124e\b\u013e\u0001\u013f\u0001\u013f\u0001"+
52707 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u1256\b\u013f\u0001"+
52708 		"\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+
52709 		"\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+
52710 		"\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+
52711 		"\u0140\u0001\u0140\u0001\u0140\u0003\u0140\u126d\b\u0140\u0001\u0141\u0001"+
52712 		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0003"+
52713 		"\u0141\u1276\b\u0141\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+
52714 		"\u0142\u0001\u0142\u0003\u0142\u127e\b\u0142\u0001\u0143\u0001\u0143\u0001"+
52715 		"\u0143\u0001\u0143\u0001\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0001"+
52716 		"\u0144\u0003\u0144\u1289\b\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0003"+
52717 		"\u0144\u128e\b\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0005"+
52718 		"\u0145\u1294\b\u0145\n\u0145\f\u0145\u1297\t\u0145\u0001\u0145\u0001\u0145"+
52719 		"\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0005\u0146\u129f\b\u0146"+
52720 		"\n\u0146\f\u0146\u12a2\t\u0146\u0001\u0146\u0001\u0146\u0001\u0147\u0001"+
52721 		"\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0003\u0147\u12ac"+
52722 		"\b\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001"+
52723 		"\u0148\u0001\u0148\u0003\u0148\u12b5\b\u0148\u0001\u0149\u0001\u0149\u0001"+
52724 		"\u0149\u0001\u0149\u0001\u0149\u0003\u0149\u12bc\b\u0149\u0001\u014a\u0001"+
52725 		"\u014a\u0003\u014a\u12c0\b\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+
52726 		"\u014b\u0003\u014b\u12c6\b\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+
52727 		"\u014b\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
52728 		"\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+
52729 		"\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0003\u014c\u12db\b\u014c\u0001"+
52730 		"\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+
52731 		"\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0005\u014d\u12e7\b\u014d\n"+
52732 		"\u014d\f\u014d\u12ea\t\u014d\u0003\u014d\u12ec\b\u014d\u0001\u014d\u0001"+
52733 		"\u014d\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0005"+
52734 		"\u014e\u12f5\b\u014e\n\u014e\f\u014e\u12f8\t\u014e\u0001\u014e\u0001\u014e"+
52735 		"\u0003\u014e\u12fc\b\u014e\u0001\u014f\u0003\u014f\u12ff\b\u014f\u0001"+
52736 		"\u014f\u0001\u014f\u0003\u014f\u1303\b\u014f\u0001\u014f\u0003\u014f\u1306"+
52737 		"\b\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u130a\b\u014f\u0001\u014f"+
52738 		"\u0003\u014f\u130d\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
52739 		"\u0003\u014f\u1313\b\u014f\u0001\u0150\u0003\u0150\u1316\b\u0150\u0001"+
52740 		"\u0150\u0003\u0150\u1319\b\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001"+
52741 		"\u0151\u0003\u0151\u131f\b\u0151\u0001\u0151\u0003\u0151\u1322\b\u0151"+
52742 		"\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0005\u0151\u1328\b\u0151"+
52743 		"\n\u0151\f\u0151\u132b\t\u0151\u0001\u0152\u0003\u0152\u132e\b\u0152\u0001"+
52744 		"\u0152\u0003\u0152\u1331\b\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0003"+
52745 		"\u0153\u1336\b\u0153\u0001\u0153\u0001\u0153\u0001\u0154\u0001\u0154\u0001"+
52746 		"\u0154\u0001\u0154\u0001\u0154\u0005\u0154\u133f\b\u0154\n\u0154\f\u0154"+
52747 		"\u1342\t\u0154\u0003\u0154\u1344\b\u0154\u0001\u0155\u0003\u0155\u1347"+
52748 		"\b\u0155\u0001\u0155\u0001\u0155\u0003\u0155\u134b\b\u0155\u0001\u0155"+
52749 		"\u0001\u0155\u0001\u0155\u0003\u0155\u1350\b\u0155\u0001\u0155\u0001\u0155"+
52750 		"\u0003\u0155\u1354\b\u0155\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156"+
52751 		"\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0005\u0157\u135e\b\u0157"+
52752 		"\n\u0157\f\u0157\u1361\t\u0157\u0001\u0157\u0003\u0157\u1364\b\u0157\u0001"+
52753 		"\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0005\u0158\u136a\b\u0158\n"+
52754 		"\u0158\f\u0158\u136d\t\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+
52755 		"\u0158\u0003\u0158\u1373\b\u0158\u0001\u0159\u0001\u0159\u0003\u0159\u1377"+
52756 		"\b\u0159\u0001\u015a\u0003\u015a\u137a\b\u015a\u0001\u015a\u0001\u015a"+
52757 		"\u0003\u015a\u137e\b\u015a\u0001\u015a\u0001\u015a\u0003\u015a\u1382\b"+
52758 		"\u015a\u0001\u015a\u0003\u015a\u1385\b\u015a\u0001\u015a\u0003\u015a\u1388"+
52759 		"\b\u015a\u0001\u015a\u0001\u015a\u0003\u015a\u138c\b\u015a\u0001\u015b"+
52760 		"\u0003\u015b\u138f\b\u015b\u0001\u015b\u0003\u015b\u1392\b\u015b\u0001"+
52761 		"\u015b\u0001\u015b\u0003\u015b\u1396\b\u015b\u0001\u015b\u0003\u015b\u1399"+
52762 		"\b\u015b\u0001\u015b\u0003\u015b\u139c\b\u015b\u0001\u015c\u0001\u015c"+
52763 		"\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+
52764 		"\u0001\u015c\u0003\u015c\u13a7\b\u015c\u0001\u015d\u0001\u015d\u0003\u015d"+
52765 		"\u13ab\b\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u13b0\b"+
52766 		"\u015d\u0005\u015d\u13b2\b\u015d\n\u015d\f\u015d\u13b5\t\u015d\u0001\u015e"+
52767 		"\u0001\u015e\u0001\u015f\u0001\u015f\u0001\u015f\u0003\u015f\u13bc\b\u015f"+
52768 		"\u0001\u015f\u0001\u015f\u0003\u015f\u13c0\b\u015f\u0001\u015f\u0005\u015f"+
52769 		"\u13c3\b\u015f\n\u015f\f\u015f\u13c6\t\u015f\u0001\u0160\u0003\u0160\u13c9"+
52770 		"\b\u0160\u0001\u0160\u0001\u0160\u0003\u0160\u13cd\b\u0160\u0001\u0160"+
52771 		"\u0001\u0160\u0003\u0160\u13d1\b\u0160\u0001\u0160\u0003\u0160\u13d4\b"+
52772 		"\u0160\u0001\u0160\u0003\u0160\u13d7\b\u0160\u0001\u0160\u0003\u0160\u13da"+
52773 		"\b\u0160\u0001\u0160\u0003\u0160\u13dd\b\u0160\u0001\u0160\u0003\u0160"+
52774 		"\u13e0\b\u0160\u0001\u0161\u0001\u0161\u0001\u0162\u0001\u0162\u0001\u0162"+
52775 		"\u0003\u0162\u13e7\b\u0162\u0003\u0162\u13e9\b\u0162\u0001\u0162\u0001"+
52776 		"\u0162\u0005\u0162\u13ed\b\u0162\n\u0162\f\u0162\u13f0\t\u0162\u0001\u0163"+
52777 		"\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u13f7\b\u0163"+
52778 		"\u0001\u0163\u0001\u0163\u0003\u0163\u13fb\b\u0163\u0001\u0163\u0001\u0163"+
52779 		"\u0003\u0163\u13ff\b\u0163\u0001\u0163\u0003\u0163\u1402\b\u0163\u0001"+
52780 		"\u0163\u0003\u0163\u1405\b\u0163\u0003\u0163\u1407\b\u0163\u0001\u0164"+
52781 		"\u0001\u0164\u0003\u0164\u140b\b\u0164\u0001\u0164\u0001\u0164\u0003\u0164"+
52782 		"\u140f\b\u0164\u0001\u0164\u0003\u0164\u1412\b\u0164\u0001\u0164\u0001"+
52783 		"\u0164\u0003\u0164\u1416\b\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001"+
52784 		"\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0003\u0164\u1420"+
52785 		"\b\u0164\u0001\u0164\u0003\u0164\u1423\b\u0164\u0003\u0164\u1425\b\u0164"+
52786 		"\u0001\u0165\u0001\u0165\u0003\u0165\u1429\b\u0165\u0001\u0166\u0001\u0166"+
52787 		"\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0168\u0001\u0168\u0001\u0168"+
52788 		"\u0001\u0169\u0001\u0169\u0001\u0169\u0005\u0169\u1436\b\u0169\n\u0169"+
52789 		"\f\u0169\u1439\t\u0169\u0001\u016a\u0001\u016a\u0005\u016a\u143d\b\u016a"+
52790 		"\n\u016a\f\u016a\u1440\t\u016a\u0001\u016b\u0001\u016b\u0003\u016b\u1444"+
52791 		"\b\u016b\u0001\u016b\u0003\u016b\u1447\b\u016b\u0001\u016b\u0001\u016b"+
52792 		"\u0003\u016b\u144b\b\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u144f\b"+
52793 		"\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u1453\b\u016b\u0001\u016b\u0003"+
52794 		"\u016b\u1456\b\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0003"+
52795 		"\u016b\u145c\b\u016b\u0001\u016c\u0003\u016c\u145f\b\u016c\u0001\u016c"+
52796 		"\u0003\u016c\u1462\b\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c"+
52797 		"\u0003\u016c\u1468\b\u016c\u0001\u016c\u0003\u016c\u146b\b\u016c\u0001"+
52798 		"\u016c\u0001\u016c\u0003\u016c\u146f\b\u016c\u0001\u016c\u0001\u016c\u0001"+
52799 		"\u016c\u0003\u016c\u1474\b\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+
52800 		"\u016c\u0003\u016c\u147a\b\u016c\u0003\u016c\u147c\b\u016c\u0001\u016d"+
52801 		"\u0001\u016d\u0001\u016d\u0001\u016d\u0003\u016d\u1482\b\u016d\u0001\u016e"+
52802 		"\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001\u016f"+
52803 		"\u0001\u016f\u0005\u016f\u148c\b\u016f\n\u016f\f\u016f\u148f\t\u016f\u0001"+
52804 		"\u0170\u0001\u0170\u0001\u0170\u0001\u0171\u0001\u0171\u0001\u0171\u0001"+
52805 		"\u0171\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0173\u0001\u0173\u0001"+
52806 		"\u0173\u0005\u0173\u149e\b\u0173\n\u0173\f\u0173\u14a1\t\u0173\u0001\u0174"+
52807 		"\u0001\u0174\u0003\u0174\u14a5\b\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+
52808 		"\u0001\u0175\u0001\u0175\u0001\u0175\u0003\u0175\u14ad\b\u0175\u0001\u0175"+
52809 		"\u0001\u0175\u0001\u0175\u0003\u0175\u14b2\b\u0175\u0003\u0175\u14b4\b"+
52810 		"\u0175\u0001\u0176\u0001\u0176\u0001\u0176\u0005\u0176\u14b9\b\u0176\n"+
52811 		"\u0176\f\u0176\u14bc\t\u0176\u0001\u0177\u0001\u0177\u0001\u0177\u0001"+
52812 		"\u0177\u0003\u0177\u14c2\b\u0177\u0001\u0177\u0003\u0177\u14c5\b\u0177"+
52813 		"\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001\u0179"+
52814 		"\u0003\u0179\u14cd\b\u0179\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52815 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52816 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52817 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52818 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52819 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52820 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a"+
52821 		"\u0005\u017a\u14f7\b\u017a\n\u017a\f\u017a\u14fa\t\u017a\u0001\u017a\u0001"+
52822 		"\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+
52823 		"\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+
52824 		"\u017a\u0001\u017a\u0001\u017a\u0005\u017a\u150c\b\u017a\n\u017a\f\u017a"+
52825 		"\u150f\t\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0003\u017a"+
52826 		"\u1515\b\u017a\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52827 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52828 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52829 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52830 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52831 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52832 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52833 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52834 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017b"+
52835 		"\u0001\u017b\u0003\u017b\u154d\b\u017b\u0001\u017c\u0001\u017c\u0001\u017c"+
52836 		"\u0001\u017c\u0003\u017c\u1553\b\u017c\u0001\u017d\u0001\u017d\u0001\u017d"+
52837 		"\u0001\u017d\u0001\u017d\u0001\u017d\u0003\u017d\u155b\b\u017d\u0001\u017d"+
52838 		"\u0003\u017d\u155e\b\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+
52839 		"\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003\u017d\u1568\b\u017d"+
52840 		"\u0003\u017d\u156a\b\u017d\u0003\u017d\u156c\b\u017d\u0001\u017d\u0001"+
52841 		"\u017d\u0001\u017d\u0003\u017d\u1571\b\u017d\u0003\u017d\u1573\b\u017d"+
52842 		"\u0003\u017d\u1575\b\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d"+
52843 		"\u0003\u017d\u157b\b\u017d\u0003\u017d\u157d\b\u017d\u0001\u017d\u0001"+
52844 		"\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003\u017d\u1584\b\u017d\u0001"+
52845 		"\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003\u017d\u158a\b\u017d\u0003"+
52846 		"\u017d\u158c\b\u017d\u0003\u017d\u158e\b\u017d\u0003\u017d\u1590\b\u017d"+
52847 		"\u0001\u017e\u0001\u017e\u0001\u017e\u0003\u017e\u1595\b\u017e\u0001\u017e"+
52848 		"\u0001\u017e\u0003\u017e\u1599\b\u017e\u0001\u017e\u0001\u017e\u0001\u017e"+
52849 		"\u0001\u017e\u0001\u017e\u0001\u017e\u0003\u017e\u15a1\b\u017e\u0003\u017e"+
52850 		"\u15a3\b\u017e\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f"+
52851 		"\u0001\u017f\u0001\u017f\u0001\u017f\u0003\u017f\u15ad\b\u017f\u0003\u017f"+
52852 		"\u15af\b\u017f\u0001\u017f\u0001\u017f\u0003\u017f\u15b3\b\u017f\u0001"+
52853 		"\u017f\u0001\u017f\u0003\u017f\u15b7\b\u017f\u0003\u017f\u15b9\b\u017f"+
52854 		"\u0001\u0180\u0001\u0180\u0001\u0180\u0003\u0180\u15be\b\u0180\u0003\u0180"+
52855 		"\u15c0\b\u0180\u0001\u0180\u0003\u0180\u15c3\b\u0180\u0001\u0181\u0001"+
52856 		"\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0005\u0181\u15ca\b\u0181\n"+
52857 		"\u0181\f\u0181\u15cd\t\u0181\u0001\u0181\u0001\u0181\u0001\u0182\u0001"+
52858 		"\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0003\u0182\u15d6\b\u0182\u0001"+
52859 		"\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0185\u0001\u0185\u0001"+
52860 		"\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0003\u0186\u15e2\b\u0186\u0001"+
52861 		"\u0187\u0001\u0187\u0001\u0187\u0003\u0187\u15e7\b\u0187\u0001\u0187\u0001"+
52862 		"\u0187\u0001\u0187\u0001\u0187\u0005\u0187\u15ed\b\u0187\n\u0187\f\u0187"+
52863 		"\u15f0\t\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0003\u0187\u15f5\b"+
52864 		"\u0187\u0001\u0187\u0001\u0187\u0003\u0187\u15f9\b\u0187\u0001\u0188\u0001"+
52865 		"\u0188\u0001\u0188\u0003\u0188\u15fe\b\u0188\u0001\u0188\u0001\u0188\u0001"+
52866 		"\u0188\u0001\u0188\u0005\u0188\u1604\b\u0188\n\u0188\f\u0188\u1607\t\u0188"+
52867 		"\u0001\u0188\u0001\u0188\u0001\u0188\u0003\u0188\u160c\b\u0188\u0001\u0189"+
52868 		"\u0001\u0189\u0003\u0189\u1610\b\u0189\u0001\u0189\u0001\u0189\u0001\u0189"+
52869 		"\u0003\u0189\u1615\b\u0189\u0005\u0189\u1617\b\u0189\n\u0189\f\u0189\u161a"+
52870 		"\t\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0003\u018a\u1620"+
52871 		"\b\u018a\u0001\u018a\u0001\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0005"+
52872 		"\u018b\u1627\b\u018b\n\u018b\f\u018b\u162a\t\u018b\u0001\u018c\u0001\u018c"+
52873 		"\u0001\u018c\u0001\u018c\u0003\u018c\u1630\b\u018c\u0001\u018c\u0001\u018c"+
52874 		"\u0001\u018d\u0001\u018d\u0001\u018d\u0003\u018d\u1637\b\u018d\u0001\u018d"+
52875 		"\u0001\u018d\u0001\u018e\u0001\u018e\u0001\u018f\u0001\u018f\u0003\u018f"+
52876 		"\u163f\b\u018f\u0001\u018f\u0001\u018f\u0003\u018f\u1643\b\u018f\u0001"+
52877 		"\u0190\u0001\u0190\u0001\u0190\u0003\u0190\u1648\b\u0190\u0001\u0190\u0001"+
52878 		"\u0190\u0001\u0190\u0001\u0190\u0005\u0190\u164e\b\u0190\n\u0190\f\u0190"+
52879 		"\u1651\t\u0190\u0001\u0190\u0003\u0190\u1654\b\u0190\u0001\u0190\u0001"+
52880 		"\u0190\u0003\u0190\u1658\b\u0190\u0001\u0191\u0001\u0191\u0001\u0191\u0003"+
52881 		"\u0191\u165d\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0005"+
52882 		"\u0191\u1663\b\u0191\n\u0191\f\u0191\u1666\t\u0191\u0001\u0191\u0003\u0191"+
52883 		"\u1669\b\u0191\u0001\u0192\u0001\u0192\u0001\u0192\u0003\u0192\u166e\b"+
52884 		"\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u1673\b\u0193\u0001"+
52885 		"\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0005\u0193\u1679\b\u0193\n"+
52886 		"\u0193\f\u0193\u167c\t\u0193\u0001\u0193\u0003\u0193\u167f\b\u0193\u0001"+
52887 		"\u0193\u0001\u0193\u0003\u0193\u1683\b\u0193\u0001\u0194\u0001\u0194\u0001"+
52888 		"\u0194\u0003\u0194\u1688\b\u0194\u0001\u0194\u0001\u0194\u0001\u0194\u0001"+
52889 		"\u0194\u0005\u0194\u168e\b\u0194\n\u0194\f\u0194\u1691\t\u0194\u0001\u0194"+
52890 		"\u0003\u0194\u1694\b\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195"+
52891 		"\u0001\u0196\u0001\u0196\u0003\u0196\u169c\b\u0196\u0001\u0196\u0001\u0196"+
52892 		"\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+
52893 		"\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+
52894 		"\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0003\u0196"+
52895 		"\u16b1\b\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+
52896 		"\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197"+
52897 		"\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0003\u0197"+
52898 		"\u16c3\b\u0197\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52899 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0003\u0198\u16ce\b\u0198"+
52900 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52901 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52902 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52903 		"\u0001\u0198\u0003\u0198\u16e3\b\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52904 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52905 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52906 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52907 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0003\u0198\u16fd\b\u0198\u0001\u0198"+
52908 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52909 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52910 		"\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198"+
52911 		"\u0003\u0198\u1712\b\u0198\u0001\u0199\u0001\u0199\u0003\u0199\u1716\b"+
52912 		"\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0003\u0199\u171b\b\u0199\u0001"+
52913 		"\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+
52914 		"\u0199\u0003\u0199\u1724\b\u0199\u0003\u0199\u1726\b\u0199\u0001\u019a"+
52915 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52916 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52917 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u1738\b\u019a\u0001\u019a"+
52918 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52919 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52920 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0003\u019a"+
52921 		"\u174c\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52922 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u1757\b\u019a"+
52923 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52924 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52925 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0003\u019a"+
52926 		"\u176a\b\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u176e\b\u019a\u0001"+
52927 		"\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0003"+
52928 		"\u019a\u1776\b\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u177a\b\u019a"+
52929 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52930 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u1785\b\u019a\u0001\u019a"+
52931 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52932 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52933 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52934 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52935 		"\u0001\u019a\u0003\u019a\u17a1\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52936 		"\u0001\u019a\u0003\u019a\u17a7\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52937 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52938 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52939 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52940 		"\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52941 		"\u0003\u019a\u17c4\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
52942 		"\u0001\u019a\u0003\u019a\u17cb\b\u019a\u0001\u019a\u0001\u019a\u0003\u019a"+
52943 		"\u17cf\b\u019a\u0001\u019b\u0001\u019b\u0001\u019b\u0003\u019b\u17d4\b"+
52944 		"\u019b\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001"+
52945 		"\u019c\u0001\u019c\u0001\u019c\u0003\u019c\u17de\b\u019c\u0001\u019d\u0001"+
52946 		"\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+
52947 		"\u019d\u0001\u019d\u0003\u019d\u17e9\b\u019d\u0001\u019e\u0001\u019e\u0001"+
52948 		"\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0003"+
52949 		"\u019e\u17f3\b\u019e\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001"+
52950 		"\u019f\u0001\u019f\u0001\u019f\u0003\u019f\u17fc\b\u019f\u0001\u01a0\u0001"+
52951 		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+
52952 		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+
52953 		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+
52954 		"\u01a0\u0003\u01a0\u1812\b\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001"+
52955 		"\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001"+
52956 		"\u01a1\u0001\u01a1\u0003\u01a1\u181f\b\u01a1\u0001\u01a2\u0001\u01a2\u0001"+
52957 		"\u01a2\u0001\u01a2\u0001\u01a2\u0003\u01a2\u1826\b\u01a2\u0001\u01a3\u0001"+
52958 		"\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001"+
52959 		"\u01a3\u0001\u01a3\u0001\u01a3\u0003\u01a3\u1832\b\u01a3\u0001\u01a4\u0001"+
52960 		"\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+
52961 		"\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0003\u01a4\u183f\b\u01a4\u0001"+
52962 		"\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+
52963 		"\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0003\u01a5\u184c"+
52964 		"\b\u01a5\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001"+
52965 		"\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0003\u01a6\u1857\b\u01a6\u0001"+
52966 		"\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+
52967 		"\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0003\u01a7\u1863\b\u01a7\u0001"+
52968 		"\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003\u01a8\u1869\b\u01a8\u0001"+
52969 		"\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003\u01a8\u186f\b\u01a8\u0001"+
52970 		"\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003\u01a8\u1875\b\u01a8\u0001"+
52971 		"\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+
52972 		"\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0003\u01a9\u1881\b\u01a9\u0001"+
52973 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
52974 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u188e"+
52975 		"\b\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+
52976 		"\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0003"+
52977 		"\u01ab\u189b\b\u01ab\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
52978 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0003"+
52979 		"\u01ac\u18a7\b\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0003"+
52980 		"\u01ad\u18ad\b\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0003"+
52981 		"\u01ad\u18b3\b\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+
52982 		"\u01ad\u0003\u01ad\u18ba\b\u01ad\u0001\u01ae\u0001\u01ae\u0003\u01ae\u18be"+
52983 		"\b\u01ae\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+
52984 		"\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0003"+
52985 		"\u01af\u18cb\b\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+
52986 		"\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+
52987 		"\u01b0\u0003\u01b0\u18d8\b\u01b0\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+
52988 		"\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0003\u01b1\u18e1\b\u01b1\u0001"+
52989 		"\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+
52990 		"\u01b2\u0001\u01b2\u0003\u01b2\u18eb\b\u01b2\u0001\u01b3\u0001\u01b3\u0001"+
52991 		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0001"+
52992 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52993 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52994 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52995 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52996 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52997 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52998 		"\u01b5\u0001\u01b5\u0003\u01b5\u191b\b\u01b5\u0001\u01b6\u0001\u01b6\u0001"+
52999 		"\u01b7\u0001\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0003"+
53000 		"\u01b8\u1925\b\u01b8\u0003\u01b8\u1927\b\u01b8\u0001\u01b9\u0001\u01b9"+
53001 		"\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9"+
53002 		"\u0001\u01b9\u0001\u01b9\u0003\u01b9\u1933\b\u01b9\u0001\u01ba\u0001\u01ba"+
53003 		"\u0001\u01ba\u0001\u01ba\u0003\u01ba\u1939\b\u01ba\u0001\u01ba\u0001\u01ba"+
53004 		"\u0001\u01ba\u0001\u01ba\u0005\u01ba\u193f\b\u01ba\n\u01ba\f\u01ba\u1942"+
53005 		"\t\u01ba\u0003\u01ba\u1944\b\u01ba\u0001\u01bb\u0001\u01bb\u0001\u01bb"+
53006 		"\u0001\u01bb\u0001\u01bb\u0005\u01bb\u194b\b\u01bb\n\u01bb\f\u01bb\u194e"+
53007 		"\t\u01bb\u0003\u01bb\u1950\b\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb"+
53008 		"\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb"+
53009 		"\u0005\u01bb\u195b\b\u01bb\n\u01bb\f\u01bb\u195e\t\u01bb\u0003\u01bb\u1960"+
53010 		"\b\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0003"+
53011 		"\u01bb\u1967\b\u01bb\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0003"+
53012 		"\u01bc\u196d\b\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001"+
53013 		"\u01bc\u0003\u01bc\u1974\b\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001"+
53014 		"\u01bc\u0005\u01bc\u197a\b\u01bc\n\u01bc\f\u01bc\u197d\t\u01bc\u0003\u01bc"+
53015 		"\u197f\b\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd"+
53016 		"\u0001\u01bd\u0001\u01bd\u0005\u01bd\u1988\b\u01bd\n\u01bd\f\u01bd\u198b"+
53017 		"\t\u01bd\u0003\u01bd\u198d\b\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd"+
53018 		"\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0003\u01bd\u1996\b\u01bd"+
53019 		"\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be"+
53020 		"\u0001\u01be\u0003\u01be\u199f\b\u01be\u0001\u01be\u0001\u01be\u0001\u01be"+
53021 		"\u0001\u01be\u0001\u01be\u0001\u01be\u0003\u01be\u19a7\b\u01be\u0003\u01be"+
53022 		"\u19a9\b\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf"+
53023 		"\u0001\u01bf\u0001\u01bf\u0003\u01bf\u19b2\b\u01bf\u0001\u01bf\u0001\u01bf"+
53024 		"\u0001\u01bf\u0003\u01bf\u19b7\b\u01bf\u0003\u01bf\u19b9\b\u01bf\u0001"+
53025 		"\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0003\u01c0\u19bf\b\u01c0\u0001"+
53026 		"\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+
53027 		"\u01c0\u0005\u01c0\u19c8\b\u01c0\n\u01c0\f\u01c0\u19cb\t\u01c0\u0003\u01c0"+
53028 		"\u19cd\b\u01c0\u0003\u01c0\u19cf\b\u01c0\u0001\u01c1\u0001\u01c1\u0001"+
53029 		"\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0003\u01c1\u19d7\b\u01c1\u0001"+
53030 		"\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0003\u01c1\u19dd\b\u01c1\u0001"+
53031 		"\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001"+
53032 		"\u01c2\u0001\u01c2\u0003\u01c2\u19e7\b\u01c2\u0001\u01c3\u0001\u01c3\u0001"+
53033 		"\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5\u0001\u01c6\u0001\u01c6\u0001"+
53034 		"\u01c6\u0003\u01c6\u19f2\b\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0003"+
53035 		"\u01c7\u19f7\b\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c8\u0001\u01c8\u0001"+
53036 		"\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0005\u01c8\u1a02"+
53037 		"\b\u01c8\n\u01c8\f\u01c8\u1a05\t\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+
53038 		"\u0003\u01c8\u1a0a\b\u01c8\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+
53039 		"\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0003\u01c9\u1a13\b\u01c9\u0001\u01c9"+
53040 		"\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+
53041 		"\u0001\u01c9\u0001\u01c9\u0003\u01c9\u1a1e\b\u01c9\u0001\u01c9\u0001\u01c9"+
53042 		"\u0001\u01c9\u0001\u01c9\u0003\u01c9\u1a24\b\u01c9\u0001\u01c9\u0001\u01c9"+
53043 		"\u0001\u01c9\u0003\u01c9\u1a29\b\u01c9\u0003\u01c9\u1a2b\b\u01c9\u0001"+
53044 		"\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0003\u01ca\u1a32"+
53045 		"\b\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0003\u01cb\u1a37\b\u01cb"+
53046 		"\u0001\u01cb\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
53047 		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc"+
53048 		"\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003\u01cc\u1a48\b\u01cc\u0001\u01cd"+
53049 		"\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd"+
53050 		"\u0001\u01cd\u0003\u01cd\u1a52\b\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce"+
53051 		"\u0001\u01ce\u0003\u01ce\u1a58\b\u01ce\u0001\u01cf\u0001\u01cf\u0001\u01cf"+
53052 		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0003\u01cf\u1a60\b\u01cf\u0001\u01cf"+
53053 		"\u0003\u01cf\u1a63\b\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf"+
53054 		"\u0005\u01cf\u1a69\b\u01cf\n\u01cf\f\u01cf\u1a6c\t\u01cf\u0003\u01cf\u1a6e"+
53055 		"\b\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
53056 		"\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
53057 		"\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
53058 		"\u01d0\u0003\u01d0\u1a82\b\u01d0\u0001\u01d1\u0001\u01d1\u0001\u01d2\u0001"+
53059 		"\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0005"+
53060 		"\u01d3\u1a8d\b\u01d3\n\u01d3\f\u01d3\u1a90\t\u01d3\u0003\u01d3\u1a92\b"+
53061 		"\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0003"+
53062 		"\u01d3\u1a99\b\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+
53063 		"\u01d4\u0001\u01d4\u0003\u01d4\u1aa1\b\u01d4\u0001\u01d5\u0001\u01d5\u0001"+
53064 		"\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0005\u01d5\u1aaa"+
53065 		"\b\u01d5\n\u01d5\f\u01d5\u1aad\t\u01d5\u0003\u01d5\u1aaf\b\u01d5\u0001"+
53066 		"\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001"+
53067 		"\u01d6\u0003\u01d6\u1ab8\b\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0003"+
53068 		"\u01d7\u1abd\b\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0005"+
53069 		"\u01d7\u1ac3\b\u01d7\n\u01d7\f\u01d7\u1ac6\t\u01d7\u0001\u01d8\u0001\u01d8"+
53070 		"\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8"+
53071 		"\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0003\u01d8\u1ad4\b\u01d8"+
53072 		"\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da\u0001\u01da"+
53073 		"\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0003\u01da\u1ae0\b\u01da"+
53074 		"\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0003\u01db\u1ae6\b\u01db"+
53075 		"\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0003\u01dc\u1aec\b\u01dc"+
53076 		"\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0005\u01dc\u1af2\b\u01dc"+
53077 		"\n\u01dc\f\u01dc\u1af5\t\u01dc\u0003\u01dc\u1af7\b\u01dc\u0001\u01dd\u0001"+
53078 		"\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1aff"+
53079 		"\b\u01dd\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01df\u0001"+
53080 		"\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+
53081 		"\u01df\u0005\u01df\u1b0d\b\u01df\n\u01df\f\u01df\u1b10\t\u01df\u0001\u01df"+
53082 		"\u0003\u01df\u1b13\b\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e1\u0001\u01e1"+
53083 		"\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0003\u01e1\u1b1d\b\u01e1"+
53084 		"\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0003\u01e1"+
53085 		"\u1b24\b\u01e1\u0003\u01e1\u1b26\b\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
53086 		"\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
53087 		"\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
53088 		"\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0003"+
53089 		"\u01e1\u1b3c\b\u01e1\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001\u01e3\u0001"+
53090 		"\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0003\u01e3\u1b46\b\u01e3\u0001"+
53091 		"\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0003\u01e4\u1b4d"+
53092 		"\b\u01e4\u0001\u01e4\u0000\u0004bjpr\u01e5\u0000\u0002\u0004\u0006\b\n"+
53093 		"\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.0246"+
53094 		"8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
53095 		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
53096 		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
53097 		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
53098 		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
53099 		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
53100 		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
53101 		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
53102 		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
53103 		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
53104 		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
53105 		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
53106 		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
53107 		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
53108 		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
53109 		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
53110 		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
53111 		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
53112 		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
53113 		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
53114 		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
53115 		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
53116 		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
53117 		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
53118 		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
53119 		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
53120 		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
53121 		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
53122 		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
53123 		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
53124 		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
53125 		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
53126 		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
53127 		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
53128 		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
53129 		"\u03bc\u03be\u03c0\u03c2\u03c4\u03c6\u03c8\u0000`\u0001\u0000ab\u0002"+
53130 		"\u0000\u00ef\u00ef\u012a\u012a\u0002\u0000\u02b7\u02b7\u02be\u02be\u0001"+
53131 		"\u0000\u000f\u0010\u0001\u0000\u0087\u0089\u0001\u0000mn7\u000056==EG"+
53132 		"RRTTbbvv{|\u0080\u0081\u0085\u0085\u0087\u0087\u008a\u008b\u008d\u008d"+
53133 		"\u008f\u0090\u0093\u0099\u009c\u009d\u009f\u009f\u00a1\u00a2\u00a4\u00a6"+
53134 		"\u00a9\u00aa\u00ad\u00ad\u00b0\u00b0\u00b8\u00b8\u00c2\u00c2\u00cb\u00cc"+
53135 		"\u00d0\u00d1\u00d5\u00d5\u00d9\u00d9\u00db\u00e1\u00e3\u00e4\u00ed\u00ee"+
53136 		"\u00f1\u00f5\u00f7\u00f8\u00fa\u0104\u0106\u010b\u010d\u0115\u0117\u012b"+
53137 		"\u0133\u01a5\u01a7\u01a7\u01ad\u01ad\u01b9\u01bb\u01e0\u01e0\u01e2\u01e8"+
53138 		"\u01ea\u01ef\u01f2\u01f2\u01f4\u01f9\u01fe\u01fe\u0203\u0204\u0206\u0208"+
53139 		"\u020a\u020c\u020e\u0217\u0222\u0283\u028c\u028c\u0291\u0291\u0295\u0295"+
53140 		"\u0002\u0000\u02b5\u02b5\u02b7\u02b7\u0002\u0000\u0004\u0004hh\u0002\u0000"+
53141 		"\u0005\u0005ii\u0002\u0000\u0006\u0006kk\u0002\u0000ln\u00e2\u00e2\u0001"+
53142 		"\u0000rs\u0001\u0000\u0018\u001d\u0003\u0000\u0006\u0007\u000f\u0010\u00d9"+
53143 		"\u00d9\u0001\u0000\u0095\u0099\u0001\u0000\u00e0\u00e1\u0002\u0000\u00a9"+
53144 		"\u00a9\u01a7\u01a7\u0001\u0000xy\u0002\u0000\u00f8\u00f8\u0102\u0102\b"+
53145 		"\u0000\u0083\u0083\u0087\u0088\u00ad\u00af\u00b1\u00b9\u00d9\u00d9\u014c"+
53146 		"\u014c\u01a9\u01b8\u02b5\u02b5\u0002\u0000\u00e1\u00e1\u0120\u0120\u0002"+
53147 		"\u0000\u0184\u0184\u0195\u0195\u0005\u0000\u00e0\u00e0\u00f7\u00f7\u0116"+
53148 		"\u0116\u011a\u011a\u0181\u0181\t\u0000\u0118\u0118\u0124\u0124\u017d\u017e"+
53149 		"\u0184\u0184\u018d\u018e\u0192\u0193\u0198\u0198\u01a4\u01a4\u01da\u01da"+
53150 		"\u0003\u0000\u00f3\u00f3\u0116\u0116\u0127\u0127\u0001\u0000\u012d\u012e"+
53151 		"\u0002\u0000\u00b0\u00b0\u0117\u0117\u0001\u0000HI\u0002\u0000\u00ba\u00ba"+
53152 		"\u00e1\u00e1\u0002\u0000\u00ee\u00ee\u0105\u0105\u0002\u0000\u0100\u0100"+
53153 		"\u011f\u011f\u0001\u0000\u00f4\u00f5\u0001\u000001\u0002\u0000ll\u009a"+
53154 		"\u009a\u0003\u0000\u00e0\u00e0\u0116\u0116\u011a\u011a\u0002\u0000\u010d"+
53155 		"\u010e\u011b\u011b\u0001\u0000\u0190\u0191\u0001\u0000[\\\u0002\u0000"+
53156 		"\u00e6\u00e6\u0115\u0115\u0001\u0000\u009c\u009d\u0003\u0000\u008c\u008c"+
53157 		"\u008e\u0090\u00fa\u00fd\u0003\u0000;;\u009d\u009d\u00f2\u00f2\u0002\u0000"+
53158 		"\u0116\u0116\u01df\u01df\u0003\u0000XXbb\u00cb\u00cb\u0001\u0000\u01e5"+
53159 		"\u01e8\u0002\u0000\r\r\u01e5\u01e8\u0001\u0000\u01ef\u01f0\u0001\u0000"+
53160 		"\u01f1\u01f4\u0002\u0000\u00cb\u00cb\u01f5\u01f6\u0003\u0000\u00d3\u00d3"+
53161 		"\u01b9\u01b9\u01fd\u01fd\u0003\u0000\u015d\u015d\u01f8\u01f8\u0208\u0208"+
53162 		"\u0002\u0000\u00ee\u00ee\u0211\u0211\u0002\u0000rr\u00e8\u00e8\u0001\u0000"+
53163 		"\u0271\u0272\u0001\u0000\u01e6\u01e7\u0003\u0000ab\u0215\u0215\u026b\u026b"+
53164 		"\u0002\u0000\u0118\u0118\u0269\u026a\u0002\u0000\u00cb\u00cb\u0220\u0220"+
53165 		"\u0001\u0000\u0266\u0268\u0002\u0000\u00c9\u00c9\u0263\u0264\u0001\u0000"+
53166 		"\u00c8\u00c9\u0001\u0000\u021d\u021e\u0002\u0000\u00d3\u00d3\u021f\u021f"+
53167 		"\u0002\u0000\u00fd\u00fe\u0253\u0253\u0002\u0000\u00a6\u00a6\u0251\u0251"+
53168 		"\u0002\u0000bb\u00f2\u00f2\u0004\u0000rr\u00f2\u00f2\u0116\u0116\u024c"+
53169 		"\u024c\u0002\u0000\u00fd\u00fd\u0253\u0253\u0003\u0000XX\u00c8\u00c8\u023d"+
53170 		"\u023d\u0002\u0000\u0116\u0116\u023b\u023c\u0002\u0000\u00fe\u00fe\u0227"+
53171 		"\u0227\u0002\u0000OOrr\u0002\u0000YY]]\u0002\u0000XX[\\\u0002\u0000ZZ"+
53172 		"]]\u0001\u0000\u01ba\u01bb\u0002\u0000uu\u010a\u010a\u0003\u0000\u00bf"+
53173 		"\u00bf\u010a\u010a\u0134\u0134\u0002\u0000\u00bf\u00c0\u010a\u010a\u0002"+
53174 		"\u0000\u009d\u009d\u00c4\u00c4\u0001\u0000\u02a4\u02a5\u0002\u0000\u00f2"+
53175 		"\u00f2\u02a7\u02a7\u0002\u0000UUgg\u0002\u0000\u00cc\u00cc\u0137\u0137"+
53176 		"\u0002\u0000\u012f\u012f\u0148\u0148\u0002\u0000\u00cc\u00cc\u0175\u0175"+
53177 		"\u0001\u0000\u013a\u013b\u0001\u0000\u015d\u015e\u0002\u0000\u00cc\u00cc"+
53178 		"\u013c\u013c\u0002\u0000..\u012d\u012d\u0002\u0000\u0132\u0132\u0290\u0290"+
53179 		"\u0005\u000066\u00cc\u00cc\u00ec\u00ed\u0111\u0111\u0117\u0117\u0002\u0000"+
53180 		"UUff\u0002\u0000\u02bc\u02bc\u02be\u02be\u0002\u0000\u0297\u0297\u029c"+
53181 		"\u029c\u1f2a\u0000\u0405\u0001\u0000\u0000\u0000\u0002\u040a\u0001\u0000"+
53182 		"\u0000\u0000\u0004\u0418\u0001\u0000\u0000\u0000\u0006\u041a\u0001\u0000"+
53183 		"\u0000\u0000\b\u041e\u0001\u0000\u0000\u0000\n\u0420\u0001\u0000\u0000"+
53184 		"\u0000\f\u0430\u0001\u0000\u0000\u0000\u000e\u0437\u0001\u0000\u0000\u0000"+
53185 		"\u0010\u0447\u0001\u0000\u0000\u0000\u0012\u044b\u0001\u0000\u0000\u0000"+
53186 		"\u0014\u0453\u0001\u0000\u0000\u0000\u0016\u0457\u0001\u0000\u0000\u0000"+
53187 		"\u0018\u045d\u0001\u0000\u0000\u0000\u001a\u0466\u0001\u0000\u0000\u0000"+
53188 		"\u001c\u0468\u0001\u0000\u0000\u0000\u001e\u046b\u0001\u0000\u0000\u0000"+
53189 		" \u0476\u0001\u0000\u0000\u0000\"\u0478\u0001\u0000\u0000\u0000$\u047a"+
53190 		"\u0001\u0000\u0000\u0000&\u047c\u0001\u0000\u0000\u0000(\u047e\u0001\u0000"+
53191 		"\u0000\u0000*\u0482\u0001\u0000\u0000\u0000,\u0486\u0001\u0000\u0000\u0000"+
53192 		".\u0488\u0001\u0000\u0000\u00000\u048a\u0001\u0000\u0000\u00002\u048c"+
53193 		"\u0001\u0000\u0000\u00004\u048e\u0001\u0000\u0000\u00006\u0493\u0001\u0000"+
53194 		"\u0000\u00008\u049a\u0001\u0000\u0000\u0000:\u04a4\u0001\u0000\u0000\u0000"+
53195 		"<\u04ab\u0001\u0000\u0000\u0000>\u04b2\u0001\u0000\u0000\u0000@\u04c2"+
53196 		"\u0001\u0000\u0000\u0000B\u04c9\u0001\u0000\u0000\u0000D\u04cd\u0001\u0000"+
53197 		"\u0000\u0000F\u04cf\u0001\u0000\u0000\u0000H\u04d4\u0001\u0000\u0000\u0000"+
53198 		"J\u04da\u0001\u0000\u0000\u0000L\u04df\u0001\u0000\u0000\u0000N\u04e1"+
53199 		"\u0001\u0000\u0000\u0000P\u04e3\u0001\u0000\u0000\u0000R\u04ee\u0001\u0000"+
53200 		"\u0000\u0000T\u04fa\u0001\u0000\u0000\u0000V\u0507\u0001\u0000\u0000\u0000"+
53201 		"X\u0509\u0001\u0000\u0000\u0000Z\u050b\u0001\u0000\u0000\u0000\\\u050f"+
53202 		"\u0001\u0000\u0000\u0000^\u0511\u0001\u0000\u0000\u0000`\u051c\u0001\u0000"+
53203 		"\u0000\u0000b\u0529\u0001\u0000\u0000\u0000d\u0538\u0001\u0000\u0000\u0000"+
53204 		"f\u053a\u0001\u0000\u0000\u0000h\u053c\u0001\u0000\u0000\u0000j\u053e"+
53205 		"\u0001\u0000\u0000\u0000l\u0558\u0001\u0000\u0000\u0000n\u0585\u0001\u0000"+
53206 		"\u0000\u0000p\u0587\u0001\u0000\u0000\u0000r\u05ce\u0001\u0000\u0000\u0000"+
53207 		"t\u05db\u0001\u0000\u0000\u0000v\u05dd\u0001\u0000\u0000\u0000x\u05ef"+
53208 		"\u0001\u0000\u0000\u0000z\u05f1\u0001\u0000\u0000\u0000|\u05f6\u0001\u0000"+
53209 		"\u0000\u0000~\u05f8\u0001\u0000\u0000\u0000\u0080\u05ff\u0001\u0000\u0000"+
53210 		"\u0000\u0082\u060a\u0001\u0000\u0000\u0000\u0084\u061a\u0001\u0000\u0000"+
53211 		"\u0000\u0086\u0633\u0001\u0000\u0000\u0000\u0088\u0635\u0001\u0000\u0000"+
53212 		"\u0000\u008a\u0643\u0001\u0000\u0000\u0000\u008c\u0648\u0001\u0000\u0000"+
53213 		"\u0000\u008e\u064f\u0001\u0000\u0000\u0000\u0090\u0651\u0001\u0000\u0000"+
53214 		"\u0000\u0092\u066b\u0001\u0000\u0000\u0000\u0094\u0677\u0001\u0000\u0000"+
53215 		"\u0000\u0096\u0687\u0001\u0000\u0000\u0000\u0098\u0689\u0001\u0000\u0000"+
53216 		"\u0000\u009a\u0691\u0001\u0000\u0000\u0000\u009c\u069d\u0001\u0000\u0000"+
53217 		"\u0000\u009e\u06aa\u0001\u0000\u0000\u0000\u00a0\u06ad\u0001\u0000\u0000"+
53218 		"\u0000\u00a2\u06ba\u0001\u0000\u0000\u0000\u00a4\u06c4\u0001\u0000\u0000"+
53219 		"\u0000\u00a6\u06c9\u0001\u0000\u0000\u0000\u00a8\u06cb\u0001\u0000\u0000"+
53220 		"\u0000\u00aa\u06d2\u0001\u0000\u0000\u0000\u00ac\u06da\u0001\u0000\u0000"+
53221 		"\u0000\u00ae\u06e2\u0001\u0000\u0000\u0000\u00b0\u06e4\u0001\u0000\u0000"+
53222 		"\u0000\u00b2\u06f5\u0001\u0000\u0000\u0000\u00b4\u06f7\u0001\u0000\u0000"+
53223 		"\u0000\u00b6\u06fb\u0001\u0000\u0000\u0000\u00b8\u0700\u0001\u0000\u0000"+
53224 		"\u0000\u00ba\u0703\u0001\u0000\u0000\u0000\u00bc\u0705\u0001\u0000\u0000"+
53225 		"\u0000\u00be\u0708\u0001\u0000\u0000\u0000\u00c0\u070e\u0001\u0000\u0000"+
53226 		"\u0000\u00c2\u0718\u0001\u0000\u0000\u0000\u00c4\u071a\u0001\u0000\u0000"+
53227 		"\u0000\u00c6\u071e\u0001\u0000\u0000\u0000\u00c8\u072c\u0001\u0000\u0000"+
53228 		"\u0000\u00ca\u0733\u0001\u0000\u0000\u0000\u00cc\u0735\u0001\u0000\u0000"+
53229 		"\u0000\u00ce\u073d\u0001\u0000\u0000\u0000\u00d0\u073f\u0001\u0000\u0000"+
53230 		"\u0000\u00d2\u0741\u0001\u0000\u0000\u0000\u00d4\u0749\u0001\u0000\u0000"+
53231 		"\u0000\u00d6\u074b\u0001\u0000\u0000\u0000\u00d8\u074d\u0001\u0000\u0000"+
53232 		"\u0000\u00da\u074f\u0001\u0000\u0000\u0000\u00dc\u0751\u0001\u0000\u0000"+
53233 		"\u0000\u00de\u0753\u0001\u0000\u0000\u0000\u00e0\u0756\u0001\u0000\u0000"+
53234 		"\u0000\u00e2\u0758\u0001\u0000\u0000\u0000\u00e4\u0763\u0001\u0000\u0000"+
53235 		"\u0000\u00e6\u0767\u0001\u0000\u0000\u0000\u00e8\u0769\u0001\u0000\u0000"+
53236 		"\u0000\u00ea\u076f\u0001\u0000\u0000\u0000\u00ec\u0778\u0001\u0000\u0000"+
53237 		"\u0000\u00ee\u077d\u0001\u0000\u0000\u0000\u00f0\u0787\u0001\u0000\u0000"+
53238 		"\u0000\u00f2\u0791\u0001\u0000\u0000\u0000\u00f4\u079a\u0001\u0000\u0000"+
53239 		"\u0000\u00f6\u07a5\u0001\u0000\u0000\u0000\u00f8\u07ae\u0001\u0000\u0000"+
53240 		"\u0000\u00fa\u07bb\u0001\u0000\u0000\u0000\u00fc\u07c4\u0001\u0000\u0000"+
53241 		"\u0000\u00fe\u07cf\u0001\u0000\u0000\u0000\u0100\u07d9\u0001\u0000\u0000"+
53242 		"\u0000\u0102\u07e5\u0001\u0000\u0000\u0000\u0104\u07eb\u0001\u0000\u0000"+
53243 		"\u0000\u0106\u07f1\u0001\u0000\u0000\u0000\u0108\u07f6\u0001\u0000\u0000"+
53244 		"\u0000\u010a\u07fd\u0001\u0000\u0000\u0000\u010c\u0806\u0001\u0000\u0000"+
53245 		"\u0000\u010e\u0811\u0001\u0000\u0000\u0000\u0110\u081a\u0001\u0000\u0000"+
53246 		"\u0000\u0112\u0821\u0001\u0000\u0000\u0000\u0114\u082a\u0001\u0000\u0000"+
53247 		"\u0000\u0116\u0837\u0001\u0000\u0000\u0000\u0118\u0844\u0001\u0000\u0000"+
53248 		"\u0000\u011a\u0851\u0001\u0000\u0000\u0000\u011c\u085e\u0001\u0000\u0000"+
53249 		"\u0000\u011e\u0873\u0001\u0000\u0000\u0000\u0120\u0880\u0001\u0000\u0000"+
53250 		"\u0000\u0122\u0884\u0001\u0000\u0000\u0000\u0124\u088b\u0001\u0000\u0000"+
53251 		"\u0000\u0126\u088f\u0001\u0000\u0000\u0000\u0128\u08a5\u0001\u0000\u0000"+
53252 		"\u0000\u012a\u08c6\u0001\u0000\u0000\u0000\u012c\u08cc\u0001\u0000\u0000"+
53253 		"\u0000\u012e\u08dd\u0001\u0000\u0000\u0000\u0130\u08e1\u0001\u0000\u0000"+
53254 		"\u0000\u0132\u08e3\u0001\u0000\u0000\u0000\u0134\u08e7\u0001\u0000\u0000"+
53255 		"\u0000\u0136\u08fb\u0001\u0000\u0000\u0000\u0138\u08fd\u0001\u0000\u0000"+
53256 		"\u0000\u013a\u093e\u0001\u0000\u0000\u0000\u013c\u0940\u0001\u0000\u0000"+
53257 		"\u0000\u013e\u0950\u0001\u0000\u0000\u0000\u0140\u0959\u0001\u0000\u0000"+
53258 		"\u0000\u0142\u0962\u0001\u0000\u0000\u0000\u0144\u097f\u0001\u0000\u0000"+
53259 		"\u0000\u0146\u0983\u0001\u0000\u0000\u0000\u0148\u098a\u0001\u0000\u0000"+
53260 		"\u0000\u014a\u0992\u0001\u0000\u0000\u0000\u014c\u0994\u0001\u0000\u0000"+
53261 		"\u0000\u014e\u09a8\u0001\u0000\u0000\u0000\u0150\u09aa\u0001\u0000\u0000"+
53262 		"\u0000\u0152\u09b0\u0001\u0000\u0000\u0000\u0154\u09b3\u0001\u0000\u0000"+
53263 		"\u0000\u0156\u09bc\u0001\u0000\u0000\u0000\u0158\u09be\u0001\u0000\u0000"+
53264 		"\u0000\u015a\u09c7\u0001\u0000\u0000\u0000\u015c\u09dd\u0001\u0000\u0000"+
53265 		"\u0000\u015e\u09e4\u0001\u0000\u0000\u0000\u0160\u09e6\u0001\u0000\u0000"+
53266 		"\u0000\u0162\u09f0\u0001\u0000\u0000\u0000\u0164\u09fe\u0001\u0000\u0000"+
53267 		"\u0000\u0166\u0a0d\u0001\u0000\u0000\u0000\u0168\u0a0f\u0001\u0000\u0000"+
53268 		"\u0000\u016a\u0a12\u0001\u0000\u0000\u0000\u016c\u0a20\u0001\u0000\u0000"+
53269 		"\u0000\u016e\u0a22\u0001\u0000\u0000\u0000\u0170\u0a2f\u0001\u0000\u0000"+
53270 		"\u0000\u0172\u0a37\u0001\u0000\u0000\u0000\u0174\u0a3e\u0001\u0000\u0000"+
53271 		"\u0000\u0176\u0a45\u0001\u0000\u0000\u0000\u0178\u0a48\u0001\u0000\u0000"+
53272 		"\u0000\u017a\u0a51\u0001\u0000\u0000\u0000\u017c\u0a56\u0001\u0000\u0000"+
53273 		"\u0000\u017e\u0a5c\u0001\u0000\u0000\u0000\u0180\u0a68\u0001\u0000\u0000"+
53274 		"\u0000\u0182\u0a80\u0001\u0000\u0000\u0000\u0184\u0a82\u0001\u0000\u0000"+
53275 		"\u0000\u0186\u0a8d\u0001\u0000\u0000\u0000\u0188\u0aa0\u0001\u0000\u0000"+
53276 		"\u0000\u018a\u0aa7\u0001\u0000\u0000\u0000\u018c\u0ab6\u0001\u0000\u0000"+
53277 		"\u0000\u018e\u0af3\u0001\u0000\u0000\u0000\u0190\u0af5\u0001\u0000\u0000"+
53278 		"\u0000\u0192\u0b01\u0001\u0000\u0000\u0000\u0194\u0b13\u0001\u0000\u0000"+
53279 		"\u0000\u0196\u0b19\u0001\u0000\u0000\u0000\u0198\u0b2b\u0001\u0000\u0000"+
53280 		"\u0000\u019a\u0b2d\u0001\u0000\u0000\u0000\u019c\u0b54\u0001\u0000\u0000"+
53281 		"\u0000\u019e\u0b56\u0001\u0000\u0000\u0000\u01a0\u0b6c\u0001\u0000\u0000"+
53282 		"\u0000\u01a2\u0b7a\u0001\u0000\u0000\u0000\u01a4\u0b7e\u0001\u0000\u0000"+
53283 		"\u0000\u01a6\u0b85\u0001\u0000\u0000\u0000\u01a8\u0b93\u0001\u0000\u0000"+
53284 		"\u0000\u01aa\u0b97\u0001\u0000\u0000\u0000\u01ac\u0ba5\u0001\u0000\u0000"+
53285 		"\u0000\u01ae\u0ba9\u0001\u0000\u0000\u0000\u01b0\u0bb8\u0001\u0000\u0000"+
53286 		"\u0000\u01b2\u0bba\u0001\u0000\u0000\u0000\u01b4\u0bc4\u0001\u0000\u0000"+
53287 		"\u0000\u01b6\u0bd8\u0001\u0000\u0000\u0000\u01b8\u0be2\u0001\u0000\u0000"+
53288 		"\u0000\u01ba\u0bef\u0001\u0000\u0000\u0000\u01bc\u0bf3\u0001\u0000\u0000"+
53289 		"\u0000\u01be\u0c10\u0001\u0000\u0000\u0000\u01c0\u0c12\u0001\u0000\u0000"+
53290 		"\u0000\u01c2\u0c14\u0001\u0000\u0000\u0000\u01c4\u0c20\u0001\u0000\u0000"+
53291 		"\u0000\u01c6\u0c2d\u0001\u0000\u0000\u0000\u01c8\u0c35\u0001\u0000\u0000"+
53292 		"\u0000\u01ca\u0c3b\u0001\u0000\u0000\u0000\u01cc\u0c4d\u0001\u0000\u0000"+
53293 		"\u0000\u01ce\u0c55\u0001\u0000\u0000\u0000\u01d0\u0c5c\u0001\u0000\u0000"+
53294 		"\u0000\u01d2\u0c65\u0001\u0000\u0000\u0000\u01d4\u0c74\u0001\u0000\u0000"+
53295 		"\u0000\u01d6\u0c7b\u0001\u0000\u0000\u0000\u01d8\u0c84\u0001\u0000\u0000"+
53296 		"\u0000\u01da\u0c86\u0001\u0000\u0000\u0000\u01dc\u0c8b\u0001\u0000\u0000"+
53297 		"\u0000\u01de\u0c8e\u0001\u0000\u0000\u0000\u01e0\u0c99\u0001\u0000\u0000"+
53298 		"\u0000\u01e2\u0c9b\u0001\u0000\u0000\u0000\u01e4\u0cbb\u0001\u0000\u0000"+
53299 		"\u0000\u01e6\u0cbd\u0001\u0000\u0000\u0000\u01e8\u0ccc\u0001\u0000\u0000"+
53300 		"\u0000\u01ea\u0ce0\u0001\u0000\u0000\u0000\u01ec\u0d17\u0001\u0000\u0000"+
53301 		"\u0000\u01ee\u0d1f\u0001\u0000\u0000\u0000\u01f0\u0d21\u0001\u0000\u0000"+
53302 		"\u0000\u01f2\u0d33\u0001\u0000\u0000\u0000\u01f4\u0d4a\u0001\u0000\u0000"+
53303 		"\u0000\u01f6\u0d60\u0001\u0000\u0000\u0000\u01f8\u0d6c\u0001\u0000\u0000"+
53304 		"\u0000\u01fa\u0d6e\u0001\u0000\u0000\u0000\u01fc\u0d86\u0001\u0000\u0000"+
53305 		"\u0000\u01fe\u0d88\u0001\u0000\u0000\u0000\u0200\u0d8e\u0001\u0000\u0000"+
53306 		"\u0000\u0202\u0d9c\u0001\u0000\u0000\u0000\u0204\u0d9e\u0001\u0000\u0000"+
53307 		"\u0000\u0206\u0dcc\u0001\u0000\u0000\u0000\u0208\u0de0\u0001\u0000\u0000"+
53308 		"\u0000\u020a\u0de2\u0001\u0000\u0000\u0000\u020c\u0dfd\u0001\u0000\u0000"+
53309 		"\u0000\u020e\u0e12\u0001\u0000\u0000\u0000\u0210\u0e15\u0001\u0000\u0000"+
53310 		"\u0000\u0212\u0e30\u0001\u0000\u0000\u0000\u0214\u0e32\u0001\u0000\u0000"+
53311 		"\u0000\u0216\u0e4e\u0001\u0000\u0000\u0000\u0218\u0e50\u0001\u0000\u0000"+
53312 		"\u0000\u021a\u0e67\u0001\u0000\u0000\u0000\u021c\u0e7f\u0001\u0000\u0000"+
53313 		"\u0000\u021e\u0e98\u0001\u0000\u0000\u0000\u0220\u0ea3\u0001\u0000\u0000"+
53314 		"\u0000\u0222\u0ebf\u0001\u0000\u0000\u0000\u0224\u0ecb\u0001\u0000\u0000"+
53315 		"\u0000\u0226\u0ed8\u0001\u0000\u0000\u0000\u0228\u0eda\u0001\u0000\u0000"+
53316 		"\u0000\u022a\u0ee6\u0001\u0000\u0000\u0000\u022c\u0eef\u0001\u0000\u0000"+
53317 		"\u0000\u022e\u0eff\u0001\u0000\u0000\u0000\u0230\u0f24\u0001\u0000\u0000"+
53318 		"\u0000\u0232\u0f3c\u0001\u0000\u0000\u0000\u0234\u0f47\u0001\u0000\u0000"+
53319 		"\u0000\u0236\u0f53\u0001\u0000\u0000\u0000\u0238\u0f55\u0001\u0000\u0000"+
53320 		"\u0000\u023a\u0f5e\u0001\u0000\u0000\u0000\u023c\u0f76\u0001\u0000\u0000"+
53321 		"\u0000\u023e\u0fa5\u0001\u0000\u0000\u0000\u0240\u0fa7\u0001\u0000\u0000"+
53322 		"\u0000\u0242\u0fb2\u0001\u0000\u0000\u0000\u0244\u0fd0\u0001\u0000\u0000"+
53323 		"\u0000\u0246\u0fd4\u0001\u0000\u0000\u0000\u0248\u0ffa\u0001\u0000\u0000"+
53324 		"\u0000\u024a\u1013\u0001\u0000\u0000\u0000\u024c\u1053\u0001\u0000\u0000"+
53325 		"\u0000\u024e\u1098\u0001\u0000\u0000\u0000\u0250\u109a\u0001\u0000\u0000"+
53326 		"\u0000\u0252\u10a5\u0001\u0000\u0000\u0000\u0254\u10bc\u0001\u0000\u0000"+
53327 		"\u0000\u0256\u10c8\u0001\u0000\u0000\u0000\u0258\u1100\u0001\u0000\u0000"+
53328 		"\u0000\u025a\u110e\u0001\u0000\u0000\u0000\u025c\u111d\u0001\u0000\u0000"+
53329 		"\u0000\u025e\u1127\u0001\u0000\u0000\u0000\u0260\u1154\u0001\u0000\u0000"+
53330 		"\u0000\u0262\u115a\u0001\u0000\u0000\u0000\u0264\u1172\u0001\u0000\u0000"+
53331 		"\u0000\u0266\u1176\u0001\u0000\u0000\u0000\u0268\u1198\u0001\u0000\u0000"+
53332 		"\u0000\u026a\u119a\u0001\u0000\u0000\u0000\u026c\u11b9\u0001\u0000\u0000"+
53333 		"\u0000\u026e\u11bb\u0001\u0000\u0000\u0000\u0270\u11c2\u0001\u0000\u0000"+
53334 		"\u0000\u0272\u11df\u0001\u0000\u0000\u0000\u0274\u11e5\u0001\u0000\u0000"+
53335 		"\u0000\u0276\u11fa\u0001\u0000\u0000\u0000\u0278\u11fc\u0001\u0000\u0000"+
53336 		"\u0000\u027a\u123e\u0001\u0000\u0000\u0000\u027c\u124d\u0001\u0000\u0000"+
53337 		"\u0000\u027e\u1255\u0001\u0000\u0000\u0000\u0280\u126c\u0001\u0000\u0000"+
53338 		"\u0000\u0282\u1275\u0001\u0000\u0000\u0000\u0284\u127d\u0001\u0000\u0000"+
53339 		"\u0000\u0286\u127f\u0001\u0000\u0000\u0000\u0288\u128d\u0001\u0000\u0000"+
53340 		"\u0000\u028a\u128f\u0001\u0000\u0000\u0000\u028c\u129a\u0001\u0000\u0000"+
53341 		"\u0000\u028e\u12ab\u0001\u0000\u0000\u0000\u0290\u12b4\u0001\u0000\u0000"+
53342 		"\u0000\u0292\u12bb\u0001\u0000\u0000\u0000\u0294\u12bf\u0001\u0000\u0000"+
53343 		"\u0000\u0296\u12c1\u0001\u0000\u0000\u0000\u0298\u12cc\u0001\u0000\u0000"+
53344 		"\u0000\u029a\u12df\u0001\u0000\u0000\u0000\u029c\u12fb\u0001\u0000\u0000"+
53345 		"\u0000\u029e\u12fe\u0001\u0000\u0000\u0000\u02a0\u1315\u0001\u0000\u0000"+
53346 		"\u0000\u02a2\u131e\u0001\u0000\u0000\u0000\u02a4\u132d\u0001\u0000\u0000"+
53347 		"\u0000\u02a6\u1335\u0001\u0000\u0000\u0000\u02a8\u1339\u0001\u0000\u0000"+
53348 		"\u0000\u02aa\u1346\u0001\u0000\u0000\u0000\u02ac\u1355\u0001\u0000\u0000"+
53349 		"\u0000\u02ae\u1359\u0001\u0000\u0000\u0000\u02b0\u1372\u0001\u0000\u0000"+
53350 		"\u0000\u02b2\u1376\u0001\u0000\u0000\u0000\u02b4\u1379\u0001\u0000\u0000"+
53351 		"\u0000\u02b6\u138e\u0001\u0000\u0000\u0000\u02b8\u13a6\u0001\u0000\u0000"+
53352 		"\u0000\u02ba\u13a8\u0001\u0000\u0000\u0000\u02bc\u13b6\u0001\u0000\u0000"+
53353 		"\u0000\u02be\u13b8\u0001\u0000\u0000\u0000\u02c0\u13c8\u0001\u0000\u0000"+
53354 		"\u0000\u02c2\u13e1\u0001\u0000\u0000\u0000\u02c4\u13e8\u0001\u0000\u0000"+
53355 		"\u0000\u02c6\u1406\u0001\u0000\u0000\u0000\u02c8\u1408\u0001\u0000\u0000"+
53356 		"\u0000\u02ca\u1428\u0001\u0000\u0000\u0000\u02cc\u142a\u0001\u0000\u0000"+
53357 		"\u0000\u02ce\u142c\u0001\u0000\u0000\u0000\u02d0\u142f\u0001\u0000\u0000"+
53358 		"\u0000\u02d2\u1432\u0001\u0000\u0000\u0000\u02d4\u143a\u0001\u0000\u0000"+
53359 		"\u0000\u02d6\u145b\u0001\u0000\u0000\u0000\u02d8\u147b\u0001\u0000\u0000"+
53360 		"\u0000\u02da\u1481\u0001\u0000\u0000\u0000\u02dc\u1483\u0001\u0000\u0000"+
53361 		"\u0000\u02de\u1486\u0001\u0000\u0000\u0000\u02e0\u1490\u0001\u0000\u0000"+
53362 		"\u0000\u02e2\u1493\u0001\u0000\u0000\u0000\u02e4\u1497\u0001\u0000\u0000"+
53363 		"\u0000\u02e6\u149a\u0001\u0000\u0000\u0000\u02e8\u14a2\u0001\u0000\u0000"+
53364 		"\u0000\u02ea\u14a9\u0001\u0000\u0000\u0000\u02ec\u14b5\u0001\u0000\u0000"+
53365 		"\u0000\u02ee\u14bd\u0001\u0000\u0000\u0000\u02f0\u14c6\u0001\u0000\u0000"+
53366 		"\u0000\u02f2\u14cc\u0001\u0000\u0000\u0000\u02f4\u1514\u0001\u0000\u0000"+
53367 		"\u0000\u02f6\u154c\u0001\u0000\u0000\u0000\u02f8\u154e\u0001\u0000\u0000"+
53368 		"\u0000\u02fa\u1554\u0001\u0000\u0000\u0000\u02fc\u1594\u0001\u0000\u0000"+
53369 		"\u0000\u02fe\u15a4\u0001\u0000\u0000\u0000\u0300\u15ba\u0001\u0000\u0000"+
53370 		"\u0000\u0302\u15c4\u0001\u0000\u0000\u0000\u0304\u15d5\u0001\u0000\u0000"+
53371 		"\u0000\u0306\u15d7\u0001\u0000\u0000\u0000\u0308\u15d9\u0001\u0000\u0000"+
53372 		"\u0000\u030a\u15db\u0001\u0000\u0000\u0000\u030c\u15de\u0001\u0000\u0000"+
53373 		"\u0000\u030e\u15e3\u0001\u0000\u0000\u0000\u0310\u15fa\u0001\u0000\u0000"+
53374 		"\u0000\u0312\u160d\u0001\u0000\u0000\u0000\u0314\u161f\u0001\u0000\u0000"+
53375 		"\u0000\u0316\u1623\u0001\u0000\u0000\u0000\u0318\u162f\u0001\u0000\u0000"+
53376 		"\u0000\u031a\u1636\u0001\u0000\u0000\u0000\u031c\u163a\u0001\u0000\u0000"+
53377 		"\u0000\u031e\u163c\u0001\u0000\u0000\u0000\u0320\u1644\u0001\u0000\u0000"+
53378 		"\u0000\u0322\u1659\u0001\u0000\u0000\u0000\u0324\u166a\u0001\u0000\u0000"+
53379 		"\u0000\u0326\u166f\u0001\u0000\u0000\u0000\u0328\u1684\u0001\u0000\u0000"+
53380 		"\u0000\u032a\u1695\u0001\u0000\u0000\u0000\u032c\u16b0\u0001\u0000\u0000"+
53381 		"\u0000\u032e\u16c2\u0001\u0000\u0000\u0000\u0330\u1711\u0001\u0000\u0000"+
53382 		"\u0000\u0332\u1725\u0001\u0000\u0000\u0000\u0334\u17ce\u0001\u0000\u0000"+
53383 		"\u0000\u0336\u17d3\u0001\u0000\u0000\u0000\u0338\u17dd\u0001\u0000\u0000"+
53384 		"\u0000\u033a\u17e8\u0001\u0000\u0000\u0000\u033c\u17f2\u0001\u0000\u0000"+
53385 		"\u0000\u033e\u17fb\u0001\u0000\u0000\u0000\u0340\u1811\u0001\u0000\u0000"+
53386 		"\u0000\u0342\u181e\u0001\u0000\u0000\u0000\u0344\u1825\u0001\u0000\u0000"+
53387 		"\u0000\u0346\u1831\u0001\u0000\u0000\u0000\u0348\u183e\u0001\u0000\u0000"+
53388 		"\u0000\u034a\u184b\u0001\u0000\u0000\u0000\u034c\u1856\u0001\u0000\u0000"+
53389 		"\u0000\u034e\u1862\u0001\u0000\u0000\u0000\u0350\u1874\u0001\u0000\u0000"+
53390 		"\u0000\u0352\u1880\u0001\u0000\u0000\u0000\u0354\u188d\u0001\u0000\u0000"+
53391 		"\u0000\u0356\u189a\u0001\u0000\u0000\u0000\u0358\u18a6\u0001\u0000\u0000"+
53392 		"\u0000\u035a\u18b9\u0001\u0000\u0000\u0000\u035c\u18bd\u0001\u0000\u0000"+
53393 		"\u0000\u035e\u18ca\u0001\u0000\u0000\u0000\u0360\u18d7\u0001\u0000\u0000"+
53394 		"\u0000\u0362\u18e0\u0001\u0000\u0000\u0000\u0364\u18ea\u0001\u0000\u0000"+
53395 		"\u0000\u0366\u18ec\u0001\u0000\u0000\u0000\u0368\u18ee\u0001\u0000\u0000"+
53396 		"\u0000\u036a\u191a\u0001\u0000\u0000\u0000\u036c\u191c\u0001\u0000\u0000"+
53397 		"\u0000\u036e\u191e\u0001\u0000\u0000\u0000\u0370\u1920\u0001\u0000\u0000"+
53398 		"\u0000\u0372\u1928\u0001\u0000\u0000\u0000\u0374\u1934\u0001\u0000\u0000"+
53399 		"\u0000\u0376\u1966\u0001\u0000\u0000\u0000\u0378\u1973\u0001\u0000\u0000"+
53400 		"\u0000\u037a\u1980\u0001\u0000\u0000\u0000\u037c\u19a8\u0001\u0000\u0000"+
53401 		"\u0000\u037e\u19b8\u0001\u0000\u0000\u0000\u0380\u19ce\u0001\u0000\u0000"+
53402 		"\u0000\u0382\u19d0\u0001\u0000\u0000\u0000\u0384\u19de\u0001\u0000\u0000"+
53403 		"\u0000\u0386\u19e8\u0001\u0000\u0000\u0000\u0388\u19ea\u0001\u0000\u0000"+
53404 		"\u0000\u038a\u19ec\u0001\u0000\u0000\u0000\u038c\u19ee\u0001\u0000\u0000"+
53405 		"\u0000\u038e\u19f3\u0001\u0000\u0000\u0000\u0390\u19fa\u0001\u0000\u0000"+
53406 		"\u0000\u0392\u1a2a\u0001\u0000\u0000\u0000\u0394\u1a2c\u0001\u0000\u0000"+
53407 		"\u0000\u0396\u1a33\u0001\u0000\u0000\u0000\u0398\u1a3a\u0001\u0000\u0000"+
53408 		"\u0000\u039a\u1a49\u0001\u0000\u0000\u0000\u039c\u1a57\u0001\u0000\u0000"+
53409 		"\u0000\u039e\u1a59\u0001\u0000\u0000\u0000\u03a0\u1a81\u0001\u0000\u0000"+
53410 		"\u0000\u03a2\u1a83\u0001\u0000\u0000\u0000\u03a4\u1a85\u0001\u0000\u0000"+
53411 		"\u0000\u03a6\u1a98\u0001\u0000\u0000\u0000\u03a8\u1aa0\u0001\u0000\u0000"+
53412 		"\u0000\u03aa\u1aae\u0001\u0000\u0000\u0000\u03ac\u1ab0\u0001\u0000\u0000"+
53413 		"\u0000\u03ae\u1abc\u0001\u0000\u0000\u0000\u03b0\u1ad3\u0001\u0000\u0000"+
53414 		"\u0000\u03b2\u1ad5\u0001\u0000\u0000\u0000\u03b4\u1ad8\u0001\u0000\u0000"+
53415 		"\u0000\u03b6\u1ae5\u0001\u0000\u0000\u0000\u03b8\u1ae7\u0001\u0000\u0000"+
53416 		"\u0000\u03ba\u1afe\u0001\u0000\u0000\u0000\u03bc\u1b00\u0001\u0000\u0000"+
53417 		"\u0000\u03be\u1b04\u0001\u0000\u0000\u0000\u03c0\u1b14\u0001\u0000\u0000"+
53418 		"\u0000\u03c2\u1b3b\u0001\u0000\u0000\u0000\u03c4\u1b3d\u0001\u0000\u0000"+
53419 		"\u0000\u03c6\u1b45\u0001\u0000\u0000\u0000\u03c8\u1b47\u0001\u0000\u0000"+
53420 		"\u0000\u03ca\u0406\u0003\u02bc\u015e\u0000\u03cb\u0406\u0003\u029e\u014f"+
53421 		"\u0000\u03cc\u0406\u0003\u02aa\u0155\u0000\u03cd\u0406\u0003\u02b4\u015a"+
53422 		"\u0000\u03ce\u0406\u0003\u00eau\u0000\u03cf\u0406\u0003\u00fe\u007f\u0000"+
53423 		"\u03d0\u0406\u0003\u0112\u0089\u0000\u03d1\u0406\u0003\u00e6s\u0000\u03d2"+
53424 		"\u0406\u0003\u00ecv\u0000\u03d3\u0406\u0003\u00f0x\u0000\u03d4\u0406\u0003"+
53425 		"\u00f2y\u0000\u03d5\u0406\u0003\u00f4z\u0000\u03d6\u0406\u0003\u00f6{"+
53426 		"\u0000\u03d7\u0406\u0003\u00f8|\u0000\u03d8\u0406\u0003\u00fa}\u0000\u03d9"+
53427 		"\u0406\u0003\u00fc~\u0000\u03da\u0406\u0003\u0108\u0084\u0000\u03db\u0406"+
53428 		"\u0003\u010a\u0085\u0000\u03dc\u0406\u0003\u0100\u0080\u0000\u03dd\u0406"+
53429 		"\u0003\u010c\u0086\u0000\u03de\u0406\u0003\u010e\u0087\u0000\u03df\u0406"+
53430 		"\u0003\u0106\u0083\u0000\u03e0\u0406\u0003\u0110\u0088\u0000\u03e1\u0406"+
53431 		"\u0003\u0114\u008a\u0000\u03e2\u0406\u0003\u0116\u008b\u0000\u03e3\u0406"+
53432 		"\u0003\u0118\u008c\u0000\u03e4\u0406\u0003\u011a\u008d\u0000\u03e5\u0406"+
53433 		"\u0003\u011c\u008e\u0000\u03e6\u0406\u0003\u011e\u008f\u0000\u03e7\u0406"+
53434 		"\u0003\u0120\u0090\u0000\u03e8\u0406\u0003\u0122\u0091\u0000\u03e9\u0406"+
53435 		"\u0003\u0124\u0092\u0000\u03ea\u0406\u0003\u00eew\u0000\u03eb\u0406\u0003"+
53436 		"\u0002\u0001\u0000\u03ec\u0406\u0003\n\u0005\u0000\u03ed\u0406\u0003\f"+
53437 		"\u0006\u0000\u03ee\u0406\u0003\u0006\u0003\u0000\u03ef\u0406\u0003\u000e"+
53438 		"\u0007\u0000\u03f0\u0406\u0003\u0010\b\u0000\u03f1\u0406\u0003\u0012\t"+
53439 		"\u0000\u03f2\u0406\u0003\u0014\n\u0000\u03f3\u0406\u0003\u0016\u000b\u0000"+
53440 		"\u03f4\u0406\u0003\u030c\u0186\u0000\u03f5\u0406\u0003\u031e\u018f\u0000"+
53441 		"\u03f6\u0406\u0003\u0324\u0192\u0000\u03f7\u0406\u0003\u0372\u01b9\u0000"+
53442 		"\u03f8\u0406\u0003\u038e\u01c7\u0000\u03f9\u0406\u0003\u0390\u01c8\u0000"+
53443 		"\u03fa\u0406\u0003\u0394\u01ca\u0000\u03fb\u0406\u0003\u0396\u01cb\u0000"+
53444 		"\u03fc\u0406\u0003\u0398\u01cc\u0000\u03fd\u0406\u0003\u039a\u01cd\u0000"+
53445 		"\u03fe\u0406\u0003\u03bc\u01de\u0000\u03ff\u0406\u0003\u03be\u01df\u0000"+
53446 		"\u0400\u0406\u0003\u00e0p\u0000\u0401\u0406\u0003\u00e2q\u0000\u0402\u0406"+
53447 		"\u0003\u0370\u01b8\u0000\u0403\u0406\u0003\u03c8\u01e4\u0000\u0404\u0406"+
53448 		"\u0003\u0126\u0093\u0000\u0405\u03ca\u0001\u0000\u0000\u0000\u0405\u03cb"+
53449 		"\u0001\u0000\u0000\u0000\u0405\u03cc\u0001\u0000\u0000\u0000\u0405\u03cd"+
53450 		"\u0001\u0000\u0000\u0000\u0405\u03ce\u0001\u0000\u0000\u0000\u0405\u03cf"+
53451 		"\u0001\u0000\u0000\u0000\u0405\u03d0\u0001\u0000\u0000\u0000\u0405\u03d1"+
53452 		"\u0001\u0000\u0000\u0000\u0405\u03d2\u0001\u0000\u0000\u0000\u0405\u03d3"+
53453 		"\u0001\u0000\u0000\u0000\u0405\u03d4\u0001\u0000\u0000\u0000\u0405\u03d5"+
53454 		"\u0001\u0000\u0000\u0000\u0405\u03d6\u0001\u0000\u0000\u0000\u0405\u03d7"+
53455 		"\u0001\u0000\u0000\u0000\u0405\u03d8\u0001\u0000\u0000\u0000\u0405\u03d9"+
53456 		"\u0001\u0000\u0000\u0000\u0405\u03da\u0001\u0000\u0000\u0000\u0405\u03db"+
53457 		"\u0001\u0000\u0000\u0000\u0405\u03dc\u0001\u0000\u0000\u0000\u0405\u03dd"+
53458 		"\u0001\u0000\u0000\u0000\u0405\u03de\u0001\u0000\u0000\u0000\u0405\u03df"+
53459 		"\u0001\u0000\u0000\u0000\u0405\u03e0\u0001\u0000\u0000\u0000\u0405\u03e1"+
53460 		"\u0001\u0000\u0000\u0000\u0405\u03e2\u0001\u0000\u0000\u0000\u0405\u03e3"+
53461 		"\u0001\u0000\u0000\u0000\u0405\u03e4\u0001\u0000\u0000\u0000\u0405\u03e5"+
53462 		"\u0001\u0000\u0000\u0000\u0405\u03e6\u0001\u0000\u0000\u0000\u0405\u03e7"+
53463 		"\u0001\u0000\u0000\u0000\u0405\u03e8\u0001\u0000\u0000\u0000\u0405\u03e9"+
53464 		"\u0001\u0000\u0000\u0000\u0405\u03ea\u0001\u0000\u0000\u0000\u0405\u03eb"+
53465 		"\u0001\u0000\u0000\u0000\u0405\u03ec\u0001\u0000\u0000\u0000\u0405\u03ed"+
53466 		"\u0001\u0000\u0000\u0000\u0405\u03ee\u0001\u0000\u0000\u0000\u0405\u03ef"+
53467 		"\u0001\u0000\u0000\u0000\u0405\u03f0\u0001\u0000\u0000\u0000\u0405\u03f1"+
53468 		"\u0001\u0000\u0000\u0000\u0405\u03f2\u0001\u0000\u0000\u0000\u0405\u03f3"+
53469 		"\u0001\u0000\u0000\u0000\u0405\u03f4\u0001\u0000\u0000\u0000\u0405\u03f5"+
53470 		"\u0001\u0000\u0000\u0000\u0405\u03f6\u0001\u0000\u0000\u0000\u0405\u03f7"+
53471 		"\u0001\u0000\u0000\u0000\u0405\u03f8\u0001\u0000\u0000\u0000\u0405\u03f9"+
53472 		"\u0001\u0000\u0000\u0000\u0405\u03fa\u0001\u0000\u0000\u0000\u0405\u03fb"+
53473 		"\u0001\u0000\u0000\u0000\u0405\u03fc\u0001\u0000\u0000\u0000\u0405\u03fd"+
53474 		"\u0001\u0000\u0000\u0000\u0405\u03fe\u0001\u0000\u0000\u0000\u0405\u03ff"+
53475 		"\u0001\u0000\u0000\u0000\u0405\u0400\u0001\u0000\u0000\u0000\u0405\u0401"+
53476 		"\u0001\u0000\u0000\u0000\u0405\u0402\u0001\u0000\u0000\u0000\u0405\u0403"+
53477 		"\u0001\u0000\u0000\u0000\u0405\u0404\u0001\u0000\u0000\u0000\u0406\u0408"+
53478 		"\u0001\u0000\u0000\u0000\u0407\u0409\u0005+\u0000\u0000\u0408\u0407\u0001"+
53479 		"\u0000\u0000\u0000\u0408\u0409\u0001\u0000\u0000\u0000\u0409\u0001\u0001"+
53480 		"\u0000\u0000\u0000\u040a\u040b\u0005:\u0000\u0000\u040b\u040c\u0005\u00ef"+
53481 		"\u0000\u0000\u040c\u040d\u0005\u0202\u0000\u0000\u040d\u040e\u0005\u0201"+
53482 		"\u0000\u0000\u040e\u040f\u0003\u0004\u0002\u0000\u040f\u0003\u0001\u0000"+
53483 		"\u0000\u0000\u0410\u0411\u0005\u0205\u0000\u0000\u0411\u0419\u0005\u028e"+
53484 		"\u0000\u0000\u0412\u0413\u0005\u0205\u0000\u0000\u0413\u0419\u0005\u028f"+
53485 		"\u0000\u0000\u0414\u0415\u0005\u0204\u0000\u0000\u0415\u0419\u0005\u0205"+
53486 		"\u0000\u0000\u0416\u0419\u0005\u0203\u0000\u0000\u0417\u0419\u0005\u0206"+
53487 		"\u0000\u0000\u0418\u0410\u0001\u0000\u0000\u0000\u0418\u0412\u0001\u0000"+
53488 		"\u0000\u0000\u0418\u0414\u0001\u0000\u0000\u0000\u0418\u0416\u0001\u0000"+
53489 		"\u0000\u0000\u0418\u0417\u0001\u0000\u0000\u0000\u0419\u0005\u0001\u0000"+
53490 		"\u0000\u0000\u041a\u041b\u0005:\u0000\u0000\u041b\u041c\u0005\u0194\u0000"+
53491 		"\u0000\u041c\u041d\u0003\b\u0004\u0000\u041d\u0007\u0001\u0000\u0000\u0000"+
53492 		"\u041e\u041f\u0007\u0000\u0000\u0000\u041f\t\u0001\u0000\u0000\u0000\u0420"+
53493 		"\u0421\u0005}\u0000\u0000\u0421\u042e\u0007\u0001\u0000\u0000\u0422\u0425"+
53494 		"\u0003\u00d4j\u0000\u0423\u0425\u0003\u00d6k\u0000\u0424\u0422\u0001\u0000"+
53495 		"\u0000\u0000\u0424\u0423\u0001\u0000\u0000\u0000\u0425\u042c\u0001\u0000"+
53496 		"\u0000\u0000\u0426\u0427\u0005M\u0000\u0000\u0427\u042a\u0005\u021a\u0000"+
53497 		"\u0000\u0428\u042b\u0003\u001c\u000e\u0000\u0429\u042b\u0005\u02be\u0000"+
53498 		"\u0000\u042a\u0428\u0001\u0000\u0000\u0000\u042a\u0429\u0001\u0000\u0000"+
53499 		"\u0000\u042a\u042b\u0001\u0000\u0000\u0000\u042b\u042d\u0001\u0000\u0000"+
53500 		"\u0000\u042c\u0426\u0001\u0000\u0000\u0000\u042c\u042d\u0001\u0000\u0000"+
53501 		"\u0000\u042d\u042f\u0001\u0000\u0000\u0000\u042e\u0424\u0001\u0000\u0000"+
53502 		"\u0000\u042e\u042f\u0001\u0000\u0000\u0000\u042f\u000b\u0001\u0000\u0000"+
53503 		"\u0000\u0430\u0431\u0005}\u0000\u0000\u0431\u0432\u0005\u0219\u0000\u0000"+
53504 		"\u0432\u0435\u0007\u0001\u0000\u0000\u0433\u0436\u0003\u00d4j\u0000\u0434"+
53505 		"\u0436\u0003\u00d6k\u0000\u0435\u0433\u0001\u0000\u0000\u0000\u0435\u0434"+
53506 		"\u0001\u0000\u0000\u0000\u0435\u0436\u0001\u0000\u0000\u0000\u0436\r\u0001"+
53507 		"\u0000\u0000\u0000\u0437\u043d\u0005~\u0000\u0000\u0438\u043b\u0007\u0001"+
53508 		"\u0000\u0000\u0439\u043c\u0003\u00d4j\u0000\u043a\u043c\u0003\u00d6k\u0000"+
53509 		"\u043b\u0439\u0001\u0000\u0000\u0000\u043b\u043a\u0001\u0000\u0000\u0000"+
53510 		"\u043b\u043c\u0001\u0000\u0000\u0000\u043c\u043e\u0001\u0000\u0000\u0000"+
53511 		"\u043d\u0438\u0001\u0000\u0000\u0000\u043d\u043e\u0001\u0000\u0000\u0000"+
53512 		"\u043e\u0445\u0001\u0000\u0000\u0000\u043f\u0440\u0005M\u0000\u0000\u0440"+
53513 		"\u0441\u0005\u001f\u0000\u0000\u0441\u0442\u0005\u0281\u0000\u0000\u0442"+
53514 		"\u0443\u0005\u0018\u0000\u0000\u0443\u0444\u0007\u0000\u0000\u0000\u0444"+
53515 		"\u0446\u0005 \u0000\u0000\u0445\u043f\u0001\u0000\u0000\u0000\u0445\u0446"+
53516 		"\u0001\u0000\u0000\u0000\u0446\u000f\u0001\u0000\u0000\u0000\u0447\u0449"+
53517 		"\u0005~\u0000\u0000\u0448\u044a\u0005\u021b\u0000\u0000\u0449\u0448\u0001"+
53518 		"\u0000\u0000\u0000\u0449\u044a\u0001\u0000\u0000\u0000\u044a\u0011\u0001"+
53519 		"\u0000\u0000\u0000\u044b\u044c\u0005\u007f\u0000\u0000\u044c\u0451\u0007"+
53520 		"\u0001\u0000\u0000\u044d\u0452\u0003\u00d4j\u0000\u044e\u0452\u0003\u00d6"+
53521 		"k\u0000\u044f\u0452\u0003\u00d8l\u0000\u0450\u0452\u0003\u00dam\u0000"+
53522 		"\u0451\u044d\u0001\u0000\u0000\u0000\u0451\u044e\u0001\u0000\u0000\u0000"+
53523 		"\u0451\u044f\u0001\u0000\u0000\u0000\u0451\u0450\u0001\u0000\u0000\u0000"+
53524 		"\u0451\u0452\u0001\u0000\u0000\u0000\u0452\u0013\u0001\u0000\u0000\u0000"+
53525 		"\u0453\u0455\u0005\u007f\u0000\u0000\u0454\u0456\u0005\u021b\u0000\u0000"+
53526 		"\u0455\u0454\u0001\u0000\u0000\u0000\u0455\u0456\u0001\u0000\u0000\u0000"+
53527 		"\u0456\u0015\u0001\u0000\u0000\u0000\u0457\u0458\u0005\u0126\u0000\u0000"+
53528 		"\u0458\u045b\u0007\u0001\u0000\u0000\u0459\u045c\u0003\u00d8l\u0000\u045a"+
53529 		"\u045c\u0003\u00dam\u0000\u045b\u0459\u0001\u0000\u0000\u0000\u045b\u045a"+
53530 		"\u0001\u0000\u0000\u0000\u045c\u0017\u0001\u0000\u0000\u0000\u045d\u045e"+
53531 		"\u0005)\u0000\u0000\u045e\u0019\u0001\u0000\u0000\u0000\u045f\u0467\u0003"+
53532 		"\u001c\u000e\u0000\u0460\u0467\u0003\u001e\u000f\u0000\u0461\u0467\u0003"+
53533 		" \u0010\u0000\u0462\u0467\u0003\"\u0011\u0000\u0463\u0467\u0003$\u0012"+
53534 		"\u0000\u0464\u0467\u0003&\u0013\u0000\u0465\u0467\u0003(\u0014\u0000\u0466"+
53535 		"\u045f\u0001\u0000\u0000\u0000\u0466\u0460\u0001\u0000\u0000\u0000\u0466"+
53536 		"\u0461\u0001\u0000\u0000\u0000\u0466\u0462\u0001\u0000\u0000\u0000\u0466"+
53537 		"\u0463\u0001\u0000\u0000\u0000\u0466\u0464\u0001\u0000\u0000\u0000\u0466"+
53538 		"\u0465\u0001\u0000\u0000\u0000\u0467\u001b\u0001\u0000\u0000\u0000\u0468"+
53539 		"\u0469\u0007\u0002\u0000\u0000\u0469\u001d\u0001\u0000\u0000\u0000\u046a"+
53540 		"\u046c\u0007\u0003\u0000\u0000\u046b\u046a\u0001\u0000\u0000\u0000\u046b"+
53541 		"\u046c\u0001\u0000\u0000\u0000\u046c\u046d\u0001\u0000\u0000\u0000\u046d"+
53542 		"\u046e\u0005\u02b8\u0000\u0000\u046e\u001f\u0001\u0000\u0000\u0000\u046f"+
53543 		"\u0470\u0007\u0004\u0000\u0000\u0470\u0477\u0005\u02b7\u0000\u0000\u0471"+
53544 		"\u0472\u0005!\u0000\u0000\u0472\u0473\u0003*\u0015\u0000\u0473\u0474\u0005"+
53545 		"\u02b7\u0000\u0000\u0474\u0475\u0005\"\u0000\u0000\u0475\u0477\u0001\u0000"+
53546 		"\u0000\u0000\u0476\u046f\u0001\u0000\u0000\u0000\u0476\u0471\u0001\u0000"+
53547 		"\u0000\u0000\u0477!\u0001\u0000\u0000\u0000\u0478\u0479\u0005\u02bc\u0000"+
53548 		"\u0000\u0479#\u0001\u0000\u0000\u0000\u047a\u047b\u0005\u02bd\u0000\u0000"+
53549 		"\u047b%\u0001\u0000\u0000\u0000\u047c\u047d\u0007\u0005\u0000\u0000\u047d"+
53550 		"\'\u0001\u0000\u0000\u0000\u047e\u047f\u0005l\u0000\u0000\u047f)\u0001"+
53551 		"\u0000\u0000\u0000\u0480\u0483\u0003,\u0016\u0000\u0481\u0483\u0003.\u0017"+
53552 		"\u0000\u0482\u0480\u0001\u0000\u0000\u0000\u0482\u0481\u0001\u0000\u0000"+
53553 		"\u0000\u0483+\u0001\u0000\u0000\u0000\u0484\u0487\u0005\u02b5\u0000\u0000"+
53554 		"\u0485\u0487\u00030\u0018\u0000\u0486\u0484\u0001\u0000\u0000\u0000\u0486"+
53555 		"\u0485\u0001\u0000\u0000\u0000\u0487-\u0001\u0000\u0000\u0000\u0488\u0489"+
53556 		"\u0005\u02b6\u0000\u0000\u0489/\u0001\u0000\u0000\u0000\u048a\u048b\u0007"+
53557 		"\u0006\u0000\u0000\u048b1\u0001\u0000\u0000\u0000\u048c\u048d\u0003*\u0015"+
53558 		"\u0000\u048d3\u0001\u0000\u0000\u0000\u048e\u048f\u0003*\u0015\u0000\u048f"+
53559 		"5\u0001\u0000\u0000\u0000\u0490\u0491\u0003L&\u0000\u0491\u0492\u0005"+
53560 		"\u0014\u0000\u0000\u0492\u0494\u0001\u0000\u0000\u0000\u0493\u0490\u0001"+
53561 		"\u0000\u0000\u0000\u0493\u0494\u0001\u0000\u0000\u0000\u0494\u0495\u0001"+
53562 		"\u0000\u0000\u0000\u0495\u0496\u0003N\'\u0000\u04967\u0001\u0000\u0000"+
53563 		"\u0000\u0497\u0498\u0003L&\u0000\u0498\u0499\u0005\u0014\u0000\u0000\u0499"+
53564 		"\u049b\u0001\u0000\u0000\u0000\u049a\u0497\u0001\u0000\u0000\u0000\u049a"+
53565 		"\u049b\u0001\u0000\u0000\u0000\u049b\u049c\u0001\u0000\u0000\u0000\u049c"+
53566 		"\u049f\u0003N\'\u0000\u049d\u049e\u0005+\u0000\u0000\u049e\u04a0\u0003"+
53567 		"\u001e\u000f\u0000\u049f\u049d\u0001\u0000\u0000\u0000\u049f\u04a0\u0001"+
53568 		"\u0000\u0000\u0000\u04a09\u0001\u0000\u0000\u0000\u04a1\u04a2\u0003L&"+
53569 		"\u0000\u04a2\u04a3\u0005\u0014\u0000\u0000\u04a3\u04a5\u0001\u0000\u0000"+
53570 		"\u0000\u04a4\u04a1\u0001\u0000\u0000\u0000\u04a4\u04a5\u0001\u0000\u0000"+
53571 		"\u0000\u04a5\u04a6\u0001\u0000\u0000\u0000\u04a6\u04a7\u0003N\'\u0000"+
53572 		"\u04a7;\u0001\u0000\u0000\u0000\u04a8\u04a9\u00034\u001a\u0000\u04a9\u04aa"+
53573 		"\u0005\u0014\u0000\u0000\u04aa\u04ac\u0001\u0000\u0000\u0000\u04ab\u04a8"+
53574 		"\u0001\u0000\u0000\u0000\u04ab\u04ac\u0001\u0000\u0000\u0000\u04ac\u04ad"+
53575 		"\u0001\u0000\u0000\u0000\u04ad\u04ae\u0003N\'\u0000\u04ae=\u0001\u0000"+
53576 		"\u0000\u0000\u04af\u04b0\u00034\u001a\u0000\u04b0\u04b1\u0005\u0014\u0000"+
53577 		"\u0000\u04b1\u04b3\u0001\u0000\u0000\u0000\u04b2\u04af\u0001\u0000\u0000"+
53578 		"\u0000\u04b2\u04b3\u0001\u0000\u0000\u0000\u04b3\u04b4\u0001\u0000\u0000"+
53579 		"\u0000\u04b4\u04b5\u0003N\'\u0000\u04b5?\u0001\u0000\u0000\u0000\u04b6"+
53580 		"\u04b7\u00032\u0019\u0000\u04b7\u04bb\u0005\u0014\u0000\u0000\u04b8\u04b9"+
53581 		"\u0003L&\u0000\u04b9\u04ba\u0005\u0014\u0000\u0000\u04ba\u04bc\u0001\u0000"+
53582 		"\u0000\u0000\u04bb\u04b8\u0001\u0000\u0000\u0000\u04bb\u04bc\u0001\u0000"+
53583 		"\u0000\u0000\u04bc\u04c3\u0001\u0000\u0000\u0000\u04bd\u04be\u0003L&\u0000"+
53584 		"\u04be\u04bf\u0005\u0014\u0000\u0000\u04bf\u04c1\u0001\u0000\u0000\u0000"+
53585 		"\u04c0\u04bd\u0001\u0000\u0000\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000"+
53586 		"\u04c1\u04c3\u0001\u0000\u0000\u0000\u04c2\u04b6\u0001\u0000\u0000\u0000"+
53587 		"\u04c2\u04c0\u0001\u0000\u0000\u0000\u04c3\u04c4\u0001\u0000\u0000\u0000"+
53588 		"\u04c4\u04c5\u0003N\'\u0000\u04c5A\u0001\u0000\u0000\u0000\u04c6\u04c7"+
53589 		"\u00034\u001a\u0000\u04c7\u04c8\u0005\u0014\u0000\u0000\u04c8\u04ca\u0001"+
53590 		"\u0000\u0000\u0000\u04c9\u04c6\u0001\u0000\u0000\u0000\u04c9\u04ca\u0001"+
53591 		"\u0000\u0000\u0000\u04ca\u04cb\u0001\u0000\u0000\u0000\u04cb\u04cc\u0003"+
53592 		"N\'\u0000\u04ccC\u0001\u0000\u0000\u0000\u04cd\u04ce\u0003N\'\u0000\u04ce"+
53593 		"E\u0001\u0000\u0000\u0000\u04cf\u04d0\u0003N\'\u0000\u04d0G\u0001\u0000"+
53594 		"\u0000\u0000\u04d1\u04d2\u0003L&\u0000\u04d2\u04d3\u0005\u0014\u0000\u0000"+
53595 		"\u04d3\u04d5\u0001\u0000\u0000\u0000\u04d4\u04d1\u0001\u0000\u0000\u0000"+
53596 		"\u04d4\u04d5\u0001\u0000\u0000\u0000\u04d5\u04d8\u0001\u0000\u0000\u0000"+
53597 		"\u04d6\u04d9\u0003N\'\u0000\u04d7\u04d9\u0003J%\u0000\u04d8\u04d6\u0001"+
53598 		"\u0000\u0000\u0000\u04d8\u04d7\u0001\u0000\u0000\u0000\u04d9I\u0001\u0000"+
53599 		"\u0000\u0000\u04da\u04db\u0005,\u0000\u0000\u04db\u04dc\u0005\u001f\u0000"+
53600 		"\u0000\u04dc\u04dd\u0003N\'\u0000\u04dd\u04de\u0005 \u0000\u0000\u04de"+
53601 		"K\u0001\u0000\u0000\u0000\u04df\u04e0\u0003*\u0015\u0000\u04e0M\u0001"+
53602 		"\u0000\u0000\u0000\u04e1\u04e2\u0003*\u0015\u0000\u04e2O\u0001\u0000\u0000"+
53603 		"\u0000\u04e3\u04e4\u0005\u001f\u0000\u0000\u04e4\u04e9\u0003H$\u0000\u04e5"+
53604 		"\u04e6\u0005%\u0000\u0000\u04e6\u04e8\u0003H$\u0000\u04e7\u04e5\u0001"+
53605 		"\u0000\u0000\u0000\u04e8\u04eb\u0001\u0000\u0000\u0000\u04e9\u04e7\u0001"+
53606 		"\u0000\u0000\u0000\u04e9\u04ea\u0001\u0000\u0000\u0000\u04ea\u04ec\u0001"+
53607 		"\u0000\u0000\u0000\u04eb\u04e9\u0001\u0000\u0000\u0000\u04ec\u04ed\u0005"+
53608 		" \u0000\u0000\u04edQ\u0001\u0000\u0000\u0000\u04ee\u04ef\u0005\u001f\u0000"+
53609 		"\u0000\u04ef\u04f4\u0003\u00b0X\u0000\u04f0\u04f1\u0005%\u0000\u0000\u04f1"+
53610 		"\u04f3\u0003\u00b0X\u0000\u04f2\u04f0\u0001\u0000\u0000\u0000\u04f3\u04f6"+
53611 		"\u0001\u0000\u0000\u0000\u04f4\u04f2\u0001\u0000\u0000\u0000\u04f4\u04f5"+
53612 		"\u0001\u0000\u0000\u0000\u04f5\u04f7\u0001\u0000\u0000\u0000\u04f6\u04f4"+
53613 		"\u0001\u0000\u0000\u0000\u04f7\u04f8\u0005 \u0000\u0000\u04f8S\u0001\u0000"+
53614 		"\u0000\u0000\u04f9\u04fb\u0005\u001f\u0000\u0000\u04fa\u04f9\u0001\u0000"+
53615 		"\u0000\u0000\u04fa\u04fb\u0001\u0000\u0000\u0000\u04fb\u04fc\u0001\u0000"+
53616 		"\u0000\u0000\u04fc\u0501\u0003@ \u0000\u04fd\u04fe\u0005%\u0000\u0000"+
53617 		"\u04fe\u0500\u0003@ \u0000\u04ff\u04fd\u0001\u0000\u0000\u0000\u0500\u0503"+
53618 		"\u0001\u0000\u0000\u0000\u0501\u04ff\u0001\u0000\u0000\u0000\u0501\u0502"+
53619 		"\u0001\u0000\u0000\u0000\u0502\u0505\u0001\u0000\u0000\u0000\u0503\u0501"+
53620 		"\u0001\u0000\u0000\u0000\u0504\u0506\u0005 \u0000\u0000\u0505\u0504\u0001"+
53621 		"\u0000\u0000\u0000\u0505\u0506\u0001\u0000\u0000\u0000\u0506U\u0001\u0000"+
53622 		"\u0000\u0000\u0507\u0508\u0003*\u0015\u0000\u0508W\u0001\u0000\u0000\u0000"+
53623 		"\u0509\u050a\u0003*\u0015\u0000\u050aY\u0001\u0000\u0000\u0000\u050b\u050c"+
53624 		"\u0007\u0007\u0000\u0000\u050c[\u0001\u0000\u0000\u0000\u050d\u0510\u0003"+
53625 		"*\u0015\u0000\u050e\u0510\u0005\u02b7\u0000\u0000\u050f\u050d\u0001\u0000"+
53626 		"\u0000\u0000\u050f\u050e\u0001\u0000\u0000\u0000\u0510]\u0001\u0000\u0000"+
53627 		"\u0000\u0511\u0517\u0005\u001f\u0000\u0000\u0512\u0515\u0005\u02b8\u0000"+
53628 		"\u0000\u0513\u0514\u0005%\u0000\u0000\u0514\u0516\u0005\u02b8\u0000\u0000"+
53629 		"\u0515\u0513\u0001\u0000\u0000\u0000\u0515\u0516\u0001\u0000\u0000\u0000"+
53630 		"\u0516\u0518\u0001\u0000\u0000\u0000\u0517\u0512\u0001\u0000\u0000\u0000"+
53631 		"\u0517\u0518\u0001\u0000\u0000\u0000\u0518\u0519\u0001\u0000\u0000\u0000"+
53632 		"\u0519\u051a\u0005 \u0000\u0000\u051a_\u0001\u0000\u0000\u0000\u051b\u051d"+
53633 		"\u0005@\u0000\u0000\u051c\u051b\u0001\u0000\u0000\u0000\u051c\u051d\u0001"+
53634 		"\u0000\u0000\u0000\u051d\u051e\u0001\u0000\u0000\u0000\u051e\u051f\u0005"+
53635 		"C\u0000\u0000\u051fa\u0001\u0000\u0000\u0000\u0520\u0521\u00061\uffff"+
53636 		"\uffff\u0000\u0521\u0522\u0003h4\u0000\u0522\u0523\u0003b1\u0003\u0523"+
53637 		"\u052a\u0001\u0000\u0000\u0000\u0524\u0525\u0005\u001f\u0000\u0000\u0525"+
53638 		"\u0526\u0003b1\u0000\u0526\u0527\u0005 \u0000\u0000\u0527\u052a\u0001"+
53639 		"\u0000\u0000\u0000\u0528\u052a\u0003j5\u0000\u0529\u0520\u0001\u0000\u0000"+
53640 		"\u0000\u0529\u0524\u0001\u0000\u0000\u0000\u0529\u0528\u0001\u0000\u0000"+
53641 		"\u0000\u052a\u0535\u0001\u0000\u0000\u0000\u052b\u052c\n\u0005\u0000\u0000"+
53642 		"\u052c\u052d\u0003d2\u0000\u052d\u052e\u0003b1\u0006\u052e\u0534\u0001"+
53643 		"\u0000\u0000\u0000\u052f\u0530\n\u0004";
53644 	private static final String _serializedATNSegment1 =
53645 		"\u0000\u0000\u0530\u0531\u0003f3\u0000\u0531\u0532\u0003b1\u0005\u0532"+
53646 		"\u0534\u0001\u0000\u0000\u0000\u0533\u052b\u0001\u0000\u0000\u0000\u0533"+
53647 		"\u052f\u0001\u0000\u0000\u0000\u0534\u0537\u0001\u0000\u0000\u0000\u0535"+
53648 		"\u0533\u0001\u0000\u0000\u0000\u0535\u0536\u0001\u0000\u0000\u0000\u0536"+
53649 		"c\u0001\u0000\u0000\u0000\u0537\u0535\u0001\u0000\u0000\u0000\u0538\u0539"+
53650 		"\u0007\b\u0000\u0000\u0539e\u0001\u0000\u0000\u0000\u053a\u053b\u0007"+
53651 		"\t\u0000\u0000\u053bg\u0001\u0000\u0000\u0000\u053c\u053d\u0007\n\u0000"+
53652 		"\u0000\u053di\u0001\u0000\u0000\u0000\u053e\u053f\u00065\uffff\uffff\u0000"+
53653 		"\u053f\u0540\u0003n7\u0000\u0540\u0555\u0001\u0000\u0000\u0000\u0541\u0542"+
53654 		"\n\u0005\u0000\u0000\u0542\u0544\u0005j\u0000\u0000\u0543\u0545\u0005"+
53655 		"k\u0000\u0000\u0544\u0543\u0001\u0000\u0000\u0000\u0544\u0545\u0001\u0000"+
53656 		"\u0000\u0000\u0545\u0546\u0001\u0000\u0000\u0000\u0546\u0554\u0007\u000b"+
53657 		"\u0000\u0000\u0547\u0548\n\u0004\u0000\u0000\u0548\u0549\u0005\u0016\u0000"+
53658 		"\u0000\u0549\u0554\u0003n7\u0000\u054a\u054b\n\u0003\u0000\u0000\u054b"+
53659 		"\u054c\u0003l6\u0000\u054c\u054d\u0003n7\u0000\u054d\u0554\u0001\u0000"+
53660 		"\u0000\u0000\u054e\u054f\n\u0002\u0000\u0000\u054f\u0550\u0003l6\u0000"+
53661 		"\u0550\u0551\u0007\f\u0000\u0000\u0551\u0552\u0003\u02e2\u0171\u0000\u0552"+
53662 		"\u0554\u0001\u0000\u0000\u0000\u0553\u0541\u0001\u0000\u0000\u0000\u0553"+
53663 		"\u0547\u0001\u0000\u0000\u0000\u0553\u054a\u0001\u0000\u0000\u0000\u0553"+
53664 		"\u054e\u0001\u0000\u0000\u0000\u0554\u0557\u0001\u0000\u0000\u0000\u0555"+
53665 		"\u0553\u0001\u0000\u0000\u0000\u0555\u0556\u0001\u0000\u0000\u0000\u0556"+
53666 		"k\u0001\u0000\u0000\u0000\u0557\u0555\u0001\u0000\u0000\u0000\u0558\u0559"+
53667 		"\u0007\r\u0000\u0000\u0559m\u0001\u0000\u0000\u0000\u055a\u055c\u0003"+
53668 		"p8\u0000\u055b\u055d\u0005k\u0000\u0000\u055c\u055b\u0001\u0000\u0000"+
53669 		"\u0000\u055c\u055d\u0001\u0000\u0000\u0000\u055d\u055e\u0001\u0000\u0000"+
53670 		"\u0000\u055e\u055f\u0005q\u0000\u0000\u055f\u0560\u0003\u02e2\u0171\u0000"+
53671 		"\u0560\u0586\u0001\u0000\u0000\u0000\u0561\u0563\u0003p8\u0000\u0562\u0564"+
53672 		"\u0005k\u0000\u0000\u0563\u0562\u0001\u0000\u0000\u0000\u0563\u0564\u0001"+
53673 		"\u0000\u0000\u0000\u0564\u0565\u0001\u0000\u0000\u0000\u0565\u0566\u0005"+
53674 		"q\u0000\u0000\u0566\u0567\u0005\u001f\u0000\u0000\u0567\u056c\u0003b1"+
53675 		"\u0000\u0568\u0569\u0005%\u0000\u0000\u0569\u056b\u0003b1\u0000\u056a"+
53676 		"\u0568\u0001\u0000\u0000\u0000\u056b\u056e\u0001\u0000\u0000\u0000\u056c"+
53677 		"\u056a\u0001\u0000\u0000\u0000\u056c\u056d\u0001\u0000\u0000\u0000\u056d"+
53678 		"\u056f\u0001\u0000\u0000\u0000\u056e\u056c\u0001\u0000\u0000\u0000\u056f"+
53679 		"\u0570\u0005 \u0000\u0000\u0570\u0586\u0001\u0000\u0000\u0000\u0571\u0573"+
53680 		"\u0003p8\u0000\u0572\u0574\u0005k\u0000\u0000\u0573\u0572\u0001\u0000"+
53681 		"\u0000\u0000\u0573\u0574\u0001\u0000\u0000\u0000\u0574\u0575\u0001\u0000"+
53682 		"\u0000\u0000\u0575\u0576\u0005p\u0000\u0000\u0576\u0577\u0003p8\u0000"+
53683 		"\u0577\u0578\u0005h\u0000\u0000\u0578\u0579\u0003n7\u0000\u0579\u0586"+
53684 		"\u0001\u0000\u0000\u0000\u057a\u057c\u0003p8\u0000\u057b\u057d\u0005k"+
53685 		"\u0000\u0000\u057c\u057b\u0001\u0000\u0000\u0000\u057c\u057d\u0001\u0000"+
53686 		"\u0000\u0000\u057d\u057e\u0001\u0000\u0000\u0000\u057e\u057f\u0005t\u0000"+
53687 		"\u0000\u057f\u0582\u0003r9\u0000\u0580\u0581\u0005\u00da\u0000\u0000\u0581"+
53688 		"\u0583\u0003r9\u0000\u0582\u0580\u0001\u0000\u0000\u0000\u0582\u0583\u0001"+
53689 		"\u0000\u0000\u0000\u0583\u0586\u0001\u0000\u0000\u0000\u0584\u0586\u0003"+
53690 		"p8\u0000\u0585\u055a\u0001\u0000\u0000\u0000\u0585\u0561\u0001\u0000\u0000"+
53691 		"\u0000\u0585\u0571\u0001\u0000\u0000\u0000\u0585\u057a\u0001\u0000\u0000"+
53692 		"\u0000\u0585\u0584\u0001\u0000\u0000\u0000\u0586o\u0001\u0000\u0000\u0000"+
53693 		"\u0587\u0588\u00068\uffff\uffff\u0000\u0588\u0589\u0003r9\u0000\u0589"+
53694 		"\u05aa\u0001\u0000\u0000\u0000\u058a\u058b\n\u000b\u0000\u0000\u058b\u058c"+
53695 		"\u0005\b\u0000\u0000\u058c\u05a9\u0003p8\f\u058d\u058e\n\n\u0000\u0000"+
53696 		"\u058e\u058f\u0005\t\u0000\u0000\u058f\u05a9\u0003p8\u000b\u0590\u0591"+
53697 		"\n\t\u0000\u0000\u0591\u0592\u0005\n\u0000\u0000\u0592\u05a9\u0003p8\n"+
53698 		"\u0593\u0594\n\b\u0000\u0000\u0594\u0595\u0005\u000b\u0000\u0000\u0595"+
53699 		"\u05a9\u0003p8\t\u0596\u0597\n\u0007\u0000\u0000\u0597\u0598\u0005\u000f"+
53700 		"\u0000\u0000\u0598\u05a9\u0003p8\b\u0599\u059a\n\u0006\u0000\u0000\u059a"+
53701 		"\u059b\u0005\u0010\u0000\u0000\u059b\u05a9\u0003p8\u0007\u059c\u059d\n"+
53702 		"\u0005\u0000\u0000\u059d\u059e\u0005\u0011\u0000\u0000\u059e\u05a9\u0003"+
53703 		"p8\u0006\u059f\u05a0\n\u0004\u0000\u0000\u05a0\u05a1\u0005\u0012\u0000"+
53704 		"\u0000\u05a1\u05a9\u0003p8\u0005\u05a2\u05a3\n\u0003\u0000\u0000\u05a3"+
53705 		"\u05a4\u0005\r\u0000\u0000\u05a4\u05a9\u0003p8\u0004\u05a5\u05a6\n\u0002"+
53706 		"\u0000\u0000\u05a6\u05a7\u0005\f\u0000\u0000\u05a7\u05a9\u0003p8\u0003"+
53707 		"\u05a8\u058a\u0001\u0000\u0000\u0000\u05a8\u058d\u0001\u0000\u0000\u0000"+
53708 		"\u05a8\u0590\u0001\u0000\u0000\u0000\u05a8\u0593\u0001\u0000\u0000\u0000"+
53709 		"\u05a8\u0596\u0001\u0000\u0000\u0000\u05a8\u0599\u0001\u0000\u0000\u0000"+
53710 		"\u05a8\u059c\u0001\u0000\u0000\u0000\u05a8\u059f\u0001\u0000\u0000\u0000"+
53711 		"\u05a8\u05a2\u0001\u0000\u0000\u0000\u05a8\u05a5\u0001\u0000\u0000\u0000"+
53712 		"\u05a9\u05ac\u0001\u0000\u0000\u0000\u05aa\u05a8\u0001\u0000\u0000\u0000"+
53713 		"\u05aa\u05ab\u0001\u0000\u0000\u0000\u05abq\u0001\u0000\u0000\u0000\u05ac"+
53714 		"\u05aa\u0001\u0000\u0000\u0000\u05ad\u05ae\u00069\uffff\uffff\u0000\u05ae"+
53715 		"\u05cf\u0003t:\u0000\u05af\u05cf\u0003\u0018\f\u0000\u05b0\u05cf\u0003"+
53716 		"\u001a\r\u0000\u05b1\u05cf\u0003H$\u0000\u05b2\u05cf\u0003\u00d0h\u0000"+
53717 		"\u05b3\u05b4\u0007\u000e\u0000\u0000\u05b4\u05cf\u0003r9\u0006\u05b5\u05b7"+
53718 		"\u0005\u00e0\u0000\u0000\u05b6\u05b5\u0001\u0000\u0000\u0000\u05b6\u05b7"+
53719 		"\u0001\u0000\u0000\u0000\u05b7\u05b8\u0001\u0000\u0000\u0000\u05b8\u05b9"+
53720 		"\u0005\u001f\u0000\u0000\u05b9\u05be\u0003b1\u0000\u05ba\u05bb\u0005%"+
53721 		"\u0000\u0000\u05bb\u05bd\u0003b1\u0000\u05bc\u05ba\u0001\u0000\u0000\u0000"+
53722 		"\u05bd\u05c0\u0001\u0000\u0000\u0000\u05be\u05bc\u0001\u0000\u0000\u0000"+
53723 		"\u05be\u05bf\u0001\u0000\u0000\u0000\u05bf\u05c1\u0001\u0000\u0000\u0000"+
53724 		"\u05c0\u05be\u0001\u0000\u0000\u0000\u05c1\u05c2\u0005 \u0000\u0000\u05c2"+
53725 		"\u05cf\u0001\u0000\u0000\u0000\u05c3\u05c5\u0005o\u0000\u0000\u05c4\u05c3"+
53726 		"\u0001\u0000\u0000\u0000\u05c4\u05c5\u0001\u0000\u0000\u0000\u05c5\u05c6"+
53727 		"\u0001\u0000\u0000\u0000\u05c6\u05cf\u0003\u02e2\u0171\u0000\u05c7\u05c8"+
53728 		"\u0005!\u0000\u0000\u05c8\u05c9\u0003*\u0015\u0000\u05c9\u05ca\u0003b"+
53729 		"1\u0000\u05ca\u05cb\u0005\"\u0000\u0000\u05cb\u05cf\u0001\u0000\u0000"+
53730 		"\u0000\u05cc\u05cf\u0003\u0088D\u0000\u05cd\u05cf\u0003\u008eG\u0000\u05ce"+
53731 		"\u05ad\u0001\u0000\u0000\u0000\u05ce\u05af\u0001\u0000\u0000\u0000\u05ce"+
53732 		"\u05b0\u0001\u0000\u0000\u0000\u05ce\u05b1\u0001\u0000\u0000\u0000\u05ce"+
53733 		"\u05b2\u0001\u0000\u0000\u0000\u05ce\u05b3\u0001\u0000\u0000\u0000\u05ce"+
53734 		"\u05b6\u0001\u0000\u0000\u0000\u05ce\u05c4\u0001\u0000\u0000\u0000\u05ce"+
53735 		"\u05c7\u0001\u0000\u0000\u0000\u05ce\u05cc\u0001\u0000\u0000\u0000\u05ce"+
53736 		"\u05cd\u0001\u0000\u0000\u0000\u05cf\u05d5\u0001\u0000\u0000\u0000\u05d0"+
53737 		"\u05d1\n\u0007\u0000\u0000\u05d1\u05d2\u0005\u0005\u0000\u0000\u05d2\u05d4"+
53738 		"\u0003r9\b\u05d3\u05d0\u0001\u0000\u0000\u0000\u05d4\u05d7\u0001\u0000"+
53739 		"\u0000\u0000\u05d5\u05d3\u0001\u0000\u0000\u0000\u05d5\u05d6\u0001\u0000"+
53740 		"\u0000\u0000\u05d6s\u0001\u0000\u0000\u0000\u05d7\u05d5\u0001\u0000\u0000"+
53741 		"\u0000\u05d8\u05dc\u0003v;\u0000\u05d9\u05dc\u0003|>\u0000\u05da\u05dc"+
53742 		"\u0003\u0084B\u0000\u05db\u05d8\u0001\u0000\u0000\u0000\u05db\u05d9\u0001"+
53743 		"\u0000\u0000\u0000\u05db\u05da\u0001\u0000\u0000\u0000\u05dcu\u0001\u0000"+
53744 		"\u0000\u0000\u05dd\u05de\u0003x<\u0000\u05de\u05e0\u0005\u001f\u0000\u0000"+
53745 		"\u05df\u05e1\u0003z=\u0000\u05e0\u05df\u0001\u0000\u0000\u0000\u05e0\u05e1"+
53746 		"\u0001\u0000\u0000\u0000\u05e1\u05eb\u0001\u0000\u0000\u0000\u05e2\u05e7"+
53747 		"\u0003b1\u0000\u05e3\u05e4\u0005%\u0000\u0000\u05e4\u05e6\u0003b1\u0000"+
53748 		"\u05e5\u05e3\u0001\u0000\u0000\u0000\u05e6\u05e9\u0001\u0000\u0000\u0000"+
53749 		"\u05e7\u05e5\u0001\u0000\u0000\u0000\u05e7\u05e8\u0001\u0000\u0000\u0000"+
53750 		"\u05e8\u05ec\u0001\u0000\u0000\u0000\u05e9\u05e7\u0001\u0000\u0000\u0000"+
53751 		"\u05ea\u05ec\u0005\u0011\u0000\u0000\u05eb\u05e2\u0001\u0000\u0000\u0000"+
53752 		"\u05eb\u05ea\u0001\u0000\u0000\u0000\u05eb\u05ec\u0001\u0000\u0000\u0000"+
53753 		"\u05ec\u05ed\u0001\u0000\u0000\u0000\u05ed\u05ee\u0005 \u0000\u0000\u05ee"+
53754 		"w\u0001\u0000\u0000\u0000\u05ef\u05f0\u0007\u000f\u0000\u0000\u05f0y\u0001"+
53755 		"\u0000\u0000\u0000\u05f1\u05f2\u0005O\u0000\u0000\u05f2{\u0001\u0000\u0000"+
53756 		"\u0000\u05f3\u05f7\u0003~?\u0000\u05f4\u05f7\u0003\u0082A\u0000\u05f5"+
53757 		"\u05f7\u0003\u0080@\u0000\u05f6\u05f3\u0001\u0000\u0000\u0000\u05f6\u05f4"+
53758 		"\u0001\u0000\u0000\u0000\u05f6\u05f5\u0001\u0000\u0000\u0000\u05f7}\u0001"+
53759 		"\u0000\u0000\u0000\u05f8\u05f9\u0005R\u0000\u0000\u05f9\u05fa\u0005\u001f"+
53760 		"\u0000\u0000\u05fa\u05fb\u0003b1\u0000\u05fb\u05fc\u0005`\u0000\u0000"+
53761 		"\u05fc\u05fd\u0003\u0094J\u0000\u05fd\u05fe\u0005 \u0000\u0000\u05fe\u007f"+
53762 		"\u0001\u0000\u0000\u0000\u05ff\u0600\u0005\u00f9\u0000\u0000\u0600\u0601"+
53763 		"\u0005\u001f\u0000\u0000\u0601\u0602\u0003\u0094J\u0000\u0602\u0603\u0005"+
53764 		"%\u0000\u0000\u0603\u0606\u0003b1\u0000\u0604\u0605\u0005%\u0000\u0000"+
53765 		"\u0605\u0607\u0005\u02b8\u0000\u0000\u0606\u0604\u0001\u0000\u0000\u0000"+
53766 		"\u0606\u0607\u0001\u0000\u0000\u0000\u0607\u0608\u0001\u0000\u0000\u0000"+
53767 		"\u0608\u0609\u0005 \u0000\u0000\u0609\u0081\u0001\u0000\u0000\u0000\u060a"+
53768 		"\u060b\u0005\u0083\u0000\u0000\u060b\u060c\u0005\u001f\u0000\u0000\u060c"+
53769 		"\u0611\u0003b1\u0000\u060d\u060e\u0005%\u0000\u0000\u060e\u0610\u0003"+
53770 		"b1\u0000\u060f\u060d\u0001\u0000\u0000\u0000\u0610\u0613\u0001\u0000\u0000"+
53771 		"\u0000\u0611\u060f\u0001\u0000\u0000\u0000\u0611\u0612\u0001\u0000\u0000"+
53772 		"\u0000\u0612\u0616\u0001\u0000\u0000\u0000\u0613\u0611\u0001\u0000\u0000"+
53773 		"\u0000\u0614\u0615\u0005^\u0000\u0000\u0615\u0617\u0003\u00cae\u0000\u0616"+
53774 		"\u0614\u0001\u0000\u0000\u0000\u0616\u0617\u0001\u0000\u0000\u0000\u0617"+
53775 		"\u0618\u0001\u0000\u0000\u0000\u0618\u0619\u0005 \u0000\u0000\u0619\u0083"+
53776 		"\u0001\u0000\u0000\u0000\u061a\u061b\u0003\u0086C\u0000\u061b\u0625\u0005"+
53777 		"\u001f\u0000\u0000\u061c\u0621\u0003b1\u0000\u061d\u061e\u0005%\u0000"+
53778 		"\u0000\u061e\u0620\u0003b1\u0000\u061f\u061d\u0001\u0000\u0000\u0000\u0620"+
53779 		"\u0623\u0001\u0000\u0000\u0000\u0621\u061f\u0001\u0000\u0000\u0000\u0621"+
53780 		"\u0622\u0001\u0000\u0000\u0000\u0622\u0626\u0001\u0000\u0000\u0000\u0623"+
53781 		"\u0621\u0001\u0000\u0000\u0000\u0624\u0626\u0005\u0011\u0000\u0000\u0625"+
53782 		"\u061c\u0001\u0000\u0000\u0000\u0625\u0624\u0001\u0000\u0000\u0000\u0625"+
53783 		"\u0626\u0001\u0000\u0000\u0000\u0626\u0627\u0001\u0000\u0000\u0000\u0627"+
53784 		"\u0628\u0005 \u0000\u0000\u0628\u0085\u0001\u0000\u0000\u0000\u0629\u062a"+
53785 		"\u0003L&\u0000\u062a\u062b\u0005\u0014\u0000\u0000\u062b\u062d\u0001\u0000"+
53786 		"\u0000\u0000\u062c\u0629\u0001\u0000\u0000\u0000\u062c\u062d\u0001\u0000"+
53787 		"\u0000\u0000\u062d\u062e\u0001\u0000\u0000\u0000\u062e\u0634\u0003*\u0015"+
53788 		"\u0000\u062f\u0634\u0005c\u0000\u0000\u0630\u0634\u0005\u008a\u0000\u0000"+
53789 		"\u0631\u0634\u0005\u008b\u0000\u0000\u0632\u0634\u0005\u0086\u0000\u0000"+
53790 		"\u0633\u062c\u0001\u0000\u0000\u0000\u0633\u062f\u0001\u0000\u0000\u0000"+
53791 		"\u0633\u0630\u0001\u0000\u0000\u0000\u0633\u0631\u0001\u0000\u0000\u0000"+
53792 		"\u0633\u0632\u0001\u0000\u0000\u0000\u0634\u0087\u0001\u0000\u0000\u0000"+
53793 		"\u0635\u0637\u0005P\u0000\u0000\u0636\u0638\u0003r9\u0000\u0637\u0636"+
53794 		"\u0001\u0000\u0000\u0000\u0637\u0638\u0001\u0000\u0000\u0000\u0638\u063a"+
53795 		"\u0001\u0000\u0000\u0000\u0639\u063b\u0003\u008aE\u0000\u063a\u0639\u0001"+
53796 		"\u0000\u0000\u0000\u063b\u063c\u0001\u0000\u0000\u0000\u063c\u063a\u0001"+
53797 		"\u0000\u0000\u0000\u063c\u063d\u0001\u0000\u0000\u0000\u063d\u063f\u0001"+
53798 		"\u0000\u0000\u0000\u063e\u0640\u0003\u008cF\u0000\u063f\u063e\u0001\u0000"+
53799 		"\u0000\u0000\u063f\u0640\u0001\u0000\u0000\u0000\u0640\u0641\u0001\u0000"+
53800 		"\u0000\u0000\u0641\u0642\u0005\u0105\u0000\u0000\u0642\u0089\u0001\u0000"+
53801 		"\u0000\u0000\u0643\u0644\u0005Q\u0000\u0000\u0644\u0645\u0003b1\u0000"+
53802 		"\u0645\u0646\u0005e\u0000\u0000\u0646\u0647\u0003b1\u0000\u0647\u008b"+
53803 		"\u0001\u0000\u0000\u0000\u0648\u0649\u0005d\u0000\u0000\u0649\u064a\u0003"+
53804 		"b1\u0000\u064a\u008d\u0001\u0000\u0000\u0000\u064b\u0650\u0003\u009eO"+
53805 		"\u0000\u064c\u0650\u0003\u0098L\u0000\u064d\u0650\u0003\u009aM\u0000\u064e"+
53806 		"\u0650\u0003\u009cN\u0000\u064f\u064b\u0001\u0000\u0000\u0000\u064f\u064c"+
53807 		"\u0001\u0000\u0000\u0000\u064f\u064d\u0001\u0000\u0000\u0000\u064f\u064e"+
53808 		"\u0001\u0000\u0000\u0000\u0650\u008f\u0001\u0000\u0000\u0000\u0651\u0652"+
53809 		"\u0005u\u0000\u0000\u0652\u0653\u0005w\u0000\u0000\u0653\u0658\u0003\u0092"+
53810 		"I\u0000\u0654\u0655\u0005%\u0000\u0000\u0655\u0657\u0003\u0092I\u0000"+
53811 		"\u0656\u0654\u0001\u0000\u0000\u0000\u0657\u065a\u0001\u0000\u0000\u0000"+
53812 		"\u0658\u0656\u0001\u0000\u0000\u0000\u0658\u0659\u0001\u0000\u0000\u0000"+
53813 		"\u0659\u0666\u0001\u0000\u0000\u0000\u065a\u0658\u0001\u0000\u0000\u0000"+
53814 		"\u065b\u065c\u0005|\u0000\u0000\u065c\u065d\u0003b1\u0000\u065d\u0664"+
53815 		"\u0007\u0010\u0000\u0000\u065e\u065f\u0005\u01a6\u0000\u0000\u065f\u0660"+
53816 		"\u0007\u0011\u0000\u0000\u0660\u0661\u0003b1\u0000\u0661\u0662\u0007\u0010"+
53817 		"\u0000\u0000\u0662\u0663\u0005\u01a8\u0000\u0000\u0663\u0665\u0001\u0000"+
53818 		"\u0000\u0000\u0664\u065e\u0001\u0000\u0000\u0000\u0664\u0665\u0001\u0000"+
53819 		"\u0000\u0000\u0665\u0667\u0001\u0000\u0000\u0000\u0666\u065b\u0001\u0000"+
53820 		"\u0000\u0000\u0666\u0667\u0001\u0000\u0000\u0000\u0667\u0091\u0001\u0000"+
53821 		"\u0000\u0000\u0668\u066c\u0003H$\u0000\u0669\u066c\u0003\u001e\u000f\u0000"+
53822 		"\u066a\u066c\u0003b1\u0000\u066b\u0668\u0001\u0000\u0000\u0000\u066b\u0669"+
53823 		"\u0001\u0000\u0000\u0000\u066b\u066a\u0001\u0000\u0000\u0000\u066c\u066f"+
53824 		"\u0001\u0000\u0000\u0000\u066d\u066e\u0005\u00f6\u0000\u0000\u066e\u0670"+
53825 		"\u0003*\u0015\u0000\u066f\u066d\u0001\u0000\u0000\u0000\u066f\u0670\u0001"+
53826 		"\u0000\u0000\u0000\u0670\u0672\u0001\u0000\u0000\u0000\u0671\u0673\u0007"+
53827 		"\u0012\u0000\u0000\u0672\u0671\u0001\u0000\u0000\u0000\u0672\u0673\u0001"+
53828 		"\u0000\u0000\u0000\u0673\u0093\u0001\u0000\u0000\u0000\u0674\u0675\u0003"+
53829 		"\u00cae\u0000\u0675\u0676\u0005\u0014\u0000\u0000\u0676\u0678\u0001\u0000"+
53830 		"\u0000\u0000\u0677\u0674\u0001\u0000\u0000\u0000\u0677\u0678\u0001\u0000"+
53831 		"\u0000\u0000\u0678\u0679\u0001\u0000\u0000\u0000\u0679\u0685\u0003\u0096"+
53832 		"K\u0000\u067a\u0686\u0003^/\u0000\u067b\u067c\u0005\u001f\u0000\u0000"+
53833 		"\u067c\u067d\u0005\u0095\u0000\u0000\u067d\u0686\u0005 \u0000\u0000\u067e"+
53834 		"\u0680\u0005\u001f\u0000\u0000\u067f\u0681\u0007\u0013\u0000\u0000\u0680"+
53835 		"\u067f\u0001\u0000\u0000\u0000\u0680\u0681\u0001\u0000\u0000\u0000\u0681"+
53836 		"\u0682\u0001\u0000\u0000\u0000\u0682\u0683\u0003\u00cae\u0000\u0683\u0684"+
53837 		"\u0005 \u0000\u0000\u0684\u0686\u0001\u0000\u0000\u0000\u0685\u067a\u0001"+
53838 		"\u0000\u0000\u0000\u0685\u067b\u0001\u0000\u0000\u0000\u0685\u067e\u0001"+
53839 		"\u0000\u0000\u0000\u0685\u0686\u0001\u0000\u0000\u0000\u0686\u0095\u0001"+
53840 		"\u0000\u0000\u0000\u0687\u0688\u0007\u0014\u0000\u0000\u0688\u0097\u0001"+
53841 		"\u0000\u0000\u0000\u0689\u068d\u0005\u02b5\u0000\u0000\u068a\u068b\u0005"+
53842 		"M\u0000\u0000\u068b\u068c\u0005\u0088\u0000\u0000\u068c\u068e\u0005\u012c"+
53843 		"\u0000\u0000\u068d\u068a\u0001\u0000\u0000\u0000\u068d\u068e\u0001\u0000"+
53844 		"\u0000\u0000\u068e\u068f\u0001\u0000\u0000\u0000\u068f\u0690\u0005\u02b7"+
53845 		"\u0000\u0000\u0690\u0099\u0001\u0000\u0000\u0000\u0691\u0692\u0005R\u0000"+
53846 		"\u0000\u0692\u0693\u0005\u001f\u0000\u0000\u0693\u0694\u0003b1\u0000\u0694"+
53847 		"\u0695\u0005`\u0000\u0000\u0695\u0699\u0003\u0094J\u0000\u0696\u0697\u0005"+
53848 		"\u001f\u0000\u0000\u0697\u0698\u0005\u02b8\u0000\u0000\u0698\u069a\u0005"+
53849 		" \u0000\u0000\u0699\u0696\u0001\u0000\u0000\u0000\u0699\u069a\u0001\u0000"+
53850 		"\u0000\u0000\u069a\u069b\u0001\u0000\u0000\u0000\u069b\u069c\u0005 \u0000"+
53851 		"\u0000\u069c\u009b\u0001\u0000\u0000\u0000\u069d\u069e\u0005\u00f9\u0000"+
53852 		"\u0000\u069e\u06a2\u0003\u0094J\u0000\u069f\u06a0\u0005\u001f\u0000\u0000"+
53853 		"\u06a0\u06a1\u0005\u02b8\u0000\u0000\u06a1\u06a3\u0005 \u0000\u0000\u06a2"+
53854 		"\u069f\u0001\u0000\u0000\u0000\u06a2\u06a3\u0001\u0000\u0000\u0000\u06a3"+
53855 		"\u06a4\u0001\u0000\u0000\u0000\u06a4\u06a5\u0005%\u0000\u0000\u06a5\u06a8"+
53856 		"\u0003b1\u0000\u06a6\u06a7\u0005%\u0000\u0000\u06a7\u06a9\u0005\u02b8"+
53857 		"\u0000\u0000\u06a8\u06a6\u0001\u0000\u0000\u0000\u06a8\u06a9\u0001\u0000"+
53858 		"\u0000\u0000\u06a9\u009d\u0001\u0000\u0000\u0000\u06aa\u06ab\u0003t:\u0000"+
53859 		"\u06ab\u06ac\u0003\u00a0P\u0000\u06ac\u009f\u0001\u0000\u0000\u0000\u06ad"+
53860 		"\u06ae\u0005\u0119\u0000\u0000\u06ae\u06b0\u0005\u001f\u0000\u0000\u06af"+
53861 		"\u06b1\u0003\u00a2Q\u0000\u06b0\u06af\u0001\u0000\u0000\u0000\u06b0\u06b1"+
53862 		"\u0001\u0000\u0000\u0000\u06b1\u06b3\u0001\u0000\u0000\u0000\u06b2\u06b4"+
53863 		"\u0003\u0090H\u0000\u06b3\u06b2\u0001\u0000\u0000\u0000\u06b3\u06b4\u0001"+
53864 		"\u0000\u0000\u0000\u06b4\u06b6\u0001\u0000\u0000\u0000\u06b5\u06b7\u0003"+
53865 		"\u00a4R\u0000\u06b6\u06b5\u0001\u0000\u0000\u0000\u06b6\u06b7\u0001\u0000"+
53866 		"\u0000\u0000\u06b7\u06b8\u0001\u0000\u0000\u0000\u06b8\u06b9\u0005 \u0000"+
53867 		"\u0000\u06b9\u00a1\u0001\u0000\u0000\u0000\u06ba\u06bb\u0005\u00dd\u0000"+
53868 		"\u0000\u06bb\u06bc\u0005w\u0000\u0000\u06bc\u06c1\u0003b1\u0000\u06bd"+
53869 		"\u06be\u0005%\u0000\u0000\u06be\u06c0\u0003b1\u0000\u06bf\u06bd\u0001"+
53870 		"\u0000\u0000\u0000\u06c0\u06c3\u0001\u0000\u0000\u0000\u06c1\u06bf\u0001"+
53871 		"\u0000\u0000\u0000\u06c1\u06c2\u0001\u0000\u0000\u0000\u06c2\u00a3\u0001"+
53872 		"\u0000\u0000\u0000\u06c3\u06c1\u0001\u0000\u0000\u0000\u06c4\u06c5\u0007"+
53873 		"\u0015\u0000\u0000\u06c5\u06c6\u0003\u00a6S\u0000\u06c6\u00a5\u0001\u0000"+
53874 		"\u0000\u0000\u06c7\u06ca\u0003\u00acV\u0000\u06c8\u06ca\u0003\u00a8T\u0000"+
53875 		"\u06c9\u06c7\u0001\u0000\u0000\u0000\u06c9\u06c8\u0001\u0000\u0000\u0000"+
53876 		"\u06ca\u00a7\u0001\u0000\u0000\u0000\u06cb\u06cc\u0005p\u0000\u0000\u06cc"+
53877 		"\u06cd\u0003\u00aaU\u0000\u06cd\u06ce\u0005h\u0000\u0000\u06ce\u06cf\u0003"+
53878 		"\u00aaU\u0000\u06cf\u00a9\u0001\u0000\u0000\u0000\u06d0\u06d3\u0003\u00ac"+
53879 		"V\u0000\u06d1\u06d3\u0003\u00aeW\u0000\u06d2\u06d0\u0001\u0000\u0000\u0000"+
53880 		"\u06d2\u06d1\u0001\u0000\u0000\u0000\u06d3\u00ab\u0001\u0000\u0000\u0000"+
53881 		"\u06d4\u06d5\u0005\u010f\u0000\u0000\u06d5\u06db\u0005\u011e\u0000\u0000"+
53882 		"\u06d6\u06d7\u0005\u02b8\u0000\u0000\u06d7\u06db\u0005\u011e\u0000\u0000"+
53883 		"\u06d8\u06d9\u0005\u009b\u0000\u0000\u06d9\u06db\u0005\u00e0\u0000\u0000"+
53884 		"\u06da\u06d4\u0001\u0000\u0000\u0000\u06da\u06d6\u0001\u0000\u0000\u0000"+
53885 		"\u06da\u06d8\u0001\u0000\u0000\u0000\u06db\u00ad\u0001\u0000\u0000\u0000"+
53886 		"\u06dc\u06dd\u0005\u010f\u0000\u0000\u06dd\u06e3\u0005\u0109\u0000\u0000"+
53887 		"\u06de\u06df\u0005\u02b8\u0000\u0000\u06df\u06e3\u0005\u0109\u0000\u0000"+
53888 		"\u06e0\u06e1\u0005\u009b\u0000\u0000\u06e1\u06e3\u0005\u00e0\u0000\u0000"+
53889 		"\u06e2\u06dc\u0001\u0000\u0000\u0000\u06e2\u06de\u0001\u0000\u0000\u0000"+
53890 		"\u06e2\u06e0\u0001\u0000\u0000\u0000\u06e3\u00af\u0001\u0000\u0000\u0000"+
53891 		"\u06e4\u06e6\u0003H$\u0000\u06e5\u06e7\u0007\u0012\u0000\u0000\u06e6\u06e5"+
53892 		"\u0001\u0000\u0000\u0000\u06e6\u06e7\u0001\u0000\u0000\u0000\u06e7\u00b1"+
53893 		"\u0001\u0000\u0000\u0000\u06e8\u06e9\u0005\u0108\u0000\u0000\u06e9\u06ea"+
53894 		"\u0005\u0018\u0000\u0000\u06ea\u06f6\u0005\u02b8\u0000\u0000\u06eb\u06f6"+
53895 		"\u0003\u00b8\\\u0000\u06ec\u06ed\u0007\u0016\u0000\u0000\u06ed\u06f6\u0003"+
53896 		"\u00b6[\u0000\u06ee\u06ef\u0005\u0113\u0000\u0000\u06ef\u06f0\u0005\u0018"+
53897 		"\u0000\u0000\u06f0\u06f6\u0005\u02b8\u0000\u0000\u06f1\u06f3\u0003\u00b4"+
53898 		"Z\u0000\u06f2\u06f4\u0003\u00be_\u0000\u06f3\u06f2\u0001\u0000\u0000\u0000"+
53899 		"\u06f3\u06f4\u0001\u0000\u0000\u0000\u06f4\u06f6\u0001\u0000\u0000\u0000"+
53900 		"\u06f5\u06e8\u0001\u0000\u0000\u0000\u06f5\u06eb\u0001\u0000\u0000\u0000"+
53901 		"\u06f5\u06ec\u0001\u0000\u0000\u0000\u06f5\u06ee\u0001\u0000\u0000\u0000"+
53902 		"\u06f5\u06f1\u0001\u0000\u0000\u0000\u06f6\u00b3\u0001\u0000\u0000\u0000"+
53903 		"\u06f7\u06f8\u0005\u0186\u0000\u0000\u06f8\u06f9\u0005\u0018\u0000\u0000"+
53904 		"\u06f9\u06fa\u0007\u0017\u0000\u0000\u06fa\u00b5\u0001\u0000\u0000\u0000"+
53905 		"\u06fb\u06fc\u0005\u0018\u0000\u0000\u06fc\u06fe\u0005\u02b8\u0000\u0000"+
53906 		"\u06fd\u06ff\u0005\u00fe\u0000\u0000\u06fe\u06fd\u0001\u0000\u0000\u0000"+
53907 		"\u06fe\u06ff\u0001\u0000\u0000\u0000\u06ff\u00b7\u0001\u0000\u0000\u0000"+
53908 		"\u0700\u0701\u0003\u00ba]\u0000\u0701\u0702\u0003\u00bc^\u0000\u0702\u00b9"+
53909 		"\u0001\u0000\u0000\u0000\u0703\u0704\u0007\u0018\u0000\u0000\u0704\u00bb"+
53910 		"\u0001\u0000\u0000\u0000\u0705\u0706\u0005\u0018\u0000\u0000\u0706\u0707"+
53911 		"\u0007\u0000\u0000\u0000\u0707\u00bd\u0001\u0000\u0000\u0000\u0708\u0709"+
53912 		"\u0005a\u0000\u0000\u0709\u070a\u0005\u00de\u0000\u0000\u070a\u070b\u0005"+
53913 		"\u001f\u0000\u0000\u070b\u070c\u0003\u00c0`\u0000\u070c\u070d\u0005 \u0000"+
53914 		"\u0000\u070d\u00bf\u0001\u0000\u0000\u0000\u070e\u0713\u0003\u00c2a\u0000"+
53915 		"\u070f\u0710\u0005%\u0000\u0000\u0710\u0712\u0003\u00c2a\u0000\u0711\u070f"+
53916 		"\u0001\u0000\u0000\u0000\u0712\u0715\u0001\u0000\u0000\u0000\u0713\u0711"+
53917 		"\u0001\u0000\u0000\u0000\u0713\u0714\u0001\u0000\u0000\u0000\u0714\u00c1"+
53918 		"\u0001\u0000\u0000\u0000\u0715\u0713\u0001\u0000\u0000\u0000\u0716\u0719"+
53919 		"\u0005\u02b8\u0000\u0000\u0717\u0719\u0003\u00c4b\u0000\u0718\u0716\u0001"+
53920 		"\u0000\u0000\u0000\u0718\u0717\u0001\u0000\u0000\u0000\u0719\u00c3\u0001"+
53921 		"\u0000\u0000\u0000\u071a\u071b\u0005\u02b8\u0000\u0000\u071b\u071c\u0005"+
53922 		"g\u0000\u0000\u071c\u071d\u0005\u02b8\u0000\u0000\u071d\u00c5\u0001\u0000"+
53923 		"\u0000\u0000\u071e\u071f\u0005\u018c\u0000\u0000\u071f\u0720\u0005\u001f"+
53924 		"\u0000\u0000\u0720\u0721\u0005\u0195\u0000\u0000\u0721\u0722\u0005\u0018"+
53925 		"\u0000\u0000\u0722\u0724\u0005\u02b8\u0000\u0000\u0723\u0725\u0005\u00fe"+
53926 		"\u0000\u0000\u0724\u0723\u0001\u0000\u0000\u0000\u0724\u0725\u0001\u0000"+
53927 		"\u0000\u0000\u0725\u0726\u0001\u0000\u0000\u0000\u0726\u0727\u0005%\u0000"+
53928 		"\u0000\u0727\u0728\u0005\u017c\u0000\u0000\u0728\u0729\u0005\u0018\u0000"+
53929 		"\u0000\u0729\u072a\u0007\u0019\u0000\u0000\u072a\u072b\u0005 \u0000\u0000"+
53930 		"\u072b\u00c7\u0001\u0000\u0000\u0000\u072c\u0731\u0005a\u0000\u0000\u072d"+
53931 		"\u072e\u0005\u001f\u0000\u0000\u072e\u072f\u0003\u00c6c\u0000\u072f\u0730"+
53932 		"\u0005 \u0000\u0000\u0730\u0732\u0001\u0000\u0000\u0000\u0731\u072d\u0001"+
53933 		"\u0000\u0000\u0000\u0731\u0732\u0001\u0000\u0000\u0000\u0732\u00c9\u0001"+
53934 		"\u0000\u0000\u0000\u0733\u0734\u0005\u02b5\u0000\u0000\u0734\u00cb\u0001"+
53935 		"\u0000\u0000\u0000\u0735\u073a\u0003\u00cae\u0000\u0736\u0737\u0005%\u0000"+
53936 		"\u0000\u0737\u0739\u0003\u00cae\u0000\u0738\u0736\u0001\u0000\u0000\u0000"+
53937 		"\u0739\u073c\u0001\u0000\u0000\u0000\u073a\u0738\u0001\u0000\u0000\u0000"+
53938 		"\u073a\u073b\u0001\u0000\u0000\u0000\u073b\u00cd\u0001\u0000\u0000\u0000"+
53939 		"\u073c\u073a\u0001\u0000\u0000\u0000\u073d\u073e\u0005\u0001\u0000\u0000"+
53940 		"\u073e\u00cf\u0001\u0000\u0000\u0000\u073f\u0740\u0003*\u0015\u0000\u0740"+
53941 		"\u00d1\u0001\u0000\u0000\u0000\u0741\u0742\u0007\u001a\u0000\u0000\u0742"+
53942 		"\u0747\u0005`\u0000\u0000\u0743\u0748\u0005\u01f9\u0000\u0000\u0744\u0748"+
53943 		"\u0005\u0127\u0000\u0000\u0745\u0748\u0005\u01fe\u0000\u0000\u0746\u0748"+
53944 		"\u0003\u001c\u000e\u0000\u0747\u0743\u0001\u0000\u0000\u0000\u0747\u0744"+
53945 		"\u0001\u0000\u0000\u0000\u0747\u0745\u0001\u0000\u0000\u0000\u0747\u0746"+
53946 		"\u0001\u0000\u0000\u0000\u0748\u00d3\u0001\u0000\u0000\u0000\u0749\u074a"+
53947 		"\u0003*\u0015\u0000\u074a\u00d5\u0001\u0000\u0000\u0000\u074b\u074c\u0003"+
53948 		"\u00d0h\u0000\u074c\u00d7\u0001\u0000\u0000\u0000\u074d\u074e\u0003*\u0015"+
53949 		"\u0000\u074e\u00d9\u0001\u0000\u0000\u0000\u074f\u0750\u0003\u00d0h\u0000"+
53950 		"\u0750\u00db\u0001\u0000\u0000\u0000\u0751\u0752\u0007\u001b\u0000\u0000"+
53951 		"\u0752\u00dd\u0001\u0000\u0000\u0000\u0753\u0754\u0005c\u0000\u0000\u0754"+
53952 		"\u0755\u0005o\u0000\u0000\u0755\u00df\u0001\u0000\u0000\u0000\u0756\u0757"+
53953 		"\u0005\u009e\u0000\u0000\u0757\u00e1\u0001\u0000\u0000\u0000\u0758\u075a"+
53954 		"\u0005\u0284\u0000\u0000\u0759\u075b\u0005\u0285\u0000\u0000\u075a\u0759"+
53955 		"\u0001\u0000\u0000\u0000\u075a\u075b\u0001\u0000\u0000\u0000\u075b\u075c"+
53956 		"\u0001\u0000\u0000\u0000\u075c\u075d\u0003\u00e4r\u0000\u075d\u00e3\u0001"+
53957 		"\u0000\u0000\u0000\u075e\u0764\u0003\u02bc\u015e\u0000\u075f\u0764\u0003"+
53958 		"\u029e\u014f\u0000\u0760\u0764\u0003\u02aa\u0155\u0000\u0761\u0764\u0003"+
53959 		"\u02b4\u015a\u0000\u0762\u0764\u0003\u0294\u014a\u0000\u0763\u075e\u0001"+
53960 		"\u0000\u0000\u0000\u0763\u075f\u0001\u0000\u0000\u0000\u0763\u0760\u0001"+
53961 		"\u0000\u0000\u0000\u0763\u0761\u0001\u0000\u0000\u0000\u0763\u0762\u0001"+
53962 		"\u0000\u0000\u0000\u0764\u00e5\u0001\u0000\u0000\u0000\u0765\u0768\u0003"+
53963 		"\u00e8t\u0000\u0766\u0768\u0003\u0294\u014a\u0000\u0767\u0765\u0001\u0000"+
53964 		"\u0000\u0000\u0767\u0766\u0001\u0000\u0000\u0000\u0768\u00e7\u0001\u0000"+
53965 		"\u0000\u0000\u0769\u076a\u00052\u0000\u0000\u076a\u076b\u0005;\u0000\u0000"+
53966 		"\u076b\u076c\u0003@ \u0000\u076c\u076d\u0003\u0130\u0098\u0000\u076d\u076e"+
53967 		"\u0003\u0132\u0099\u0000\u076e\u00e9\u0001\u0000\u0000\u0000\u076f\u0770"+
53968 		"\u00052\u0000\u0000\u0770\u0771\u0003\u01a0\u00d0\u0000\u0771\u0772\u0005"+
53969 		">\u0000\u0000\u0772\u0773\u0003V+\u0000\u0773\u0774\u0005a\u0000\u0000"+
53970 		"\u0774\u0775\u0003@ \u0000\u0775\u0776\u0003R)\u0000\u0776\u0777\u0003"+
53971 		"\u0246\u0123\u0000\u0777\u00eb\u0001\u0000\u0000\u0000\u0778\u0779\u0005"+
53972 		"2\u0000\u0000\u0779\u077a\u0005\u00cc\u0000\u0000\u077a\u077b\u00032\u0019"+
53973 		"\u0000\u077b\u077c\u0003\u01e8\u00f4\u0000\u077c\u00ed\u0001\u0000\u0000"+
53974 		"\u0000\u077d\u0780\u00052\u0000\u0000\u077e\u077f\u0005i\u0000\u0000\u077f"+
53975 		"\u0781\u00053\u0000\u0000\u0780\u077e\u0001\u0000\u0000\u0000\u0780\u0781"+
53976 		"\u0001\u0000\u0000\u0000\u0781\u0782\u0001\u0000\u0000\u0000\u0782\u0783"+
53977 		"\u0005F\u0000\u0000\u0783\u0784\u00036\u001b\u0000\u0784\u0785\u0003\u0214"+
53978 		"\u010a\u0000\u0785\u0786\u0003\u0216\u010b\u0000\u0786\u00ef\u0001\u0000"+
53979 		"\u0000\u0000\u0787\u078a\u00052\u0000\u0000\u0788\u0789\u0005i\u0000\u0000"+
53980 		"\u0789\u078b\u00053\u0000\u0000\u078a\u0788\u0001\u0000\u0000\u0000\u078a"+
53981 		"\u078b\u0001\u0000\u0000\u0000\u078b\u078c\u0001\u0000\u0000\u0000\u078c"+
53982 		"\u078d\u0007\u001c\u0000\u0000\u078d\u078e\u00038\u001c\u0000\u078e\u078f"+
53983 		"\u0003\u0226\u0113\u0000\u078f\u0790\u0003\u022a\u0115\u0000\u0790\u00f1"+
53984 		"\u0001\u0000\u0000\u0000\u0791\u0794\u00052\u0000\u0000\u0792\u0793\u0005"+
53985 		"i\u0000\u0000\u0793\u0795\u00053\u0000\u0000\u0794\u0792\u0001\u0000\u0000"+
53986 		"\u0000\u0794\u0795\u0001\u0000\u0000\u0000\u0795\u0796\u0001\u0000\u0000"+
53987 		"\u0000\u0796\u0797\u0005J\u0000\u0000\u0797\u0798\u0003:\u001d\u0000\u0798"+
53988 		"\u0799\u0003\u0234\u011a\u0000\u0799\u00f3\u0001\u0000\u0000\u0000\u079a"+
53989 		"\u079d\u00052\u0000\u0000\u079b\u079c\u0005i\u0000\u0000\u079c\u079e\u0005"+
53990 		"3\u0000\u0000\u079d\u079b\u0001\u0000\u0000\u0000\u079d\u079e\u0001\u0000"+
53991 		"\u0000\u0000\u079e\u079f\u0001\u0000\u0000\u0000\u079f\u07a0\u0005G\u0000"+
53992 		"\u0000\u07a0\u07a1\u0003<\u001e\u0000\u07a1\u07a2\u0005a\u0000\u0000\u07a2"+
53993 		"\u07a3\u0003\u0242\u0121\u0000\u07a3\u07a4\u0003\u023c\u011e\u0000\u07a4"+
53994 		"\u00f5\u0001\u0000\u0000\u0000\u07a5\u07a6\u00052\u0000\u0000\u07a6\u07a7"+
53995 		"\u0005\u017b\u0000\u0000\u07a7\u07ab\u0003>\u001f\u0000\u07a8\u07aa\u0003"+
53996 		"\u0244\u0122\u0000\u07a9\u07a8\u0001\u0000\u0000\u0000\u07aa\u07ad\u0001"+
53997 		"\u0000\u0000\u0000\u07ab\u07a9\u0001\u0000\u0000\u0000\u07ab\u07ac\u0001"+
53998 		"\u0000\u0000\u0000\u07ac\u00f7\u0001\u0000\u0000\u0000\u07ad\u07ab\u0001"+
53999 		"\u0000\u0000\u0000\u07ae\u07af\u00052\u0000\u0000\u07af\u07b0\u0005\u015a"+
54000 		"\u0000\u0000\u07b0\u07b3\u0003F#\u0000\u07b1\u07b2\u0005\u0282\u0000\u0000"+
54001 		"\u07b2\u07b4\u0005\u02b7\u0000\u0000\u07b3\u07b1\u0001\u0000\u0000\u0000"+
54002 		"\u07b3\u07b4\u0001\u0000\u0000\u0000\u07b4\u07b5\u0001\u0000\u0000\u0000"+
54003 		"\u07b5\u07b6\u0005a\u0000\u0000\u07b6\u07b7\u0005\u016e\u0000\u0000\u07b7"+
54004 		"\u07b9\u0003B!\u0000\u07b8\u07ba\u0003\u028a\u0145\u0000\u07b9\u07b8\u0001"+
54005 		"\u0000\u0000\u0000\u07b9\u07ba\u0001\u0000\u0000\u0000\u07ba\u00f9\u0001"+
54006 		"\u0000\u0000\u0000\u07bb\u07bc\u00052\u0000\u0000\u07bc\u07bd\u00056\u0000"+
54007 		"\u0000\u07bd\u07c1\u0003\u0290\u0148\u0000\u07be\u07c0\u0003\u0292\u0149"+
54008 		"\u0000\u07bf\u07be\u0001\u0000\u0000\u0000\u07c0\u07c3\u0001\u0000\u0000"+
54009 		"\u0000\u07c1\u07bf\u0001\u0000\u0000\u0000\u07c1\u07c2\u0001\u0000\u0000"+
54010 		"\u0000\u07c2\u00fb\u0001\u0000\u0000\u0000\u07c3\u07c1\u0001\u0000\u0000"+
54011 		"\u0000\u07c4\u07c5\u00053\u0000\u0000\u07c5\u07c6\u0005;\u0000\u0000\u07c6"+
54012 		"\u07c7\u0003@ \u0000\u07c7\u07cc\u0003\u01a2\u00d1\u0000\u07c8\u07c9\u0005"+
54013 		"%\u0000\u0000\u07c9\u07cb\u0003\u01a2\u00d1\u0000\u07ca\u07c8\u0001\u0000"+
54014 		"\u0000\u0000\u07cb\u07ce\u0001\u0000\u0000\u0000\u07cc\u07ca\u0001\u0000"+
54015 		"\u0000\u0000\u07cc\u07cd\u0001\u0000\u0000\u0000\u07cd\u00fd\u0001\u0000"+
54016 		"\u0000\u0000\u07ce\u07cc\u0001\u0000\u0000\u0000\u07cf\u07d0\u00053\u0000"+
54017 		"\u0000\u07d0\u07d3\u0005>\u0000\u0000\u07d1\u07d4\u0003V+\u0000\u07d2"+
54018 		"\u07d4\u0005r\u0000\u0000\u07d3\u07d1\u0001\u0000\u0000\u0000\u07d3\u07d2"+
54019 		"\u0001\u0000\u0000\u0000\u07d4\u07d5\u0001\u0000\u0000\u0000\u07d5\u07d6"+
54020 		"\u0005a\u0000\u0000\u07d6\u07d7\u0003@ \u0000\u07d7\u07d8\u0003\u024c"+
54021 		"\u0126\u0000\u07d8\u00ff\u0001\u0000\u0000\u0000\u07d9\u07da\u00053\u0000"+
54022 		"\u0000\u07da\u07dd\u0005\u00cc\u0000\u0000\u07db\u07de\u00032\u0019\u0000"+
54023 		"\u07dc\u07de\u0005\u009b\u0000\u0000\u07dd\u07db\u0001\u0000\u0000\u0000"+
54024 		"\u07dd\u07dc\u0001\u0000\u0000\u0000\u07de\u07e2\u0001\u0000\u0000\u0000"+
54025 		"\u07df\u07e1\u0003\u0258\u012c\u0000\u07e0\u07df\u0001\u0000\u0000\u0000"+
54026 		"\u07e1\u07e4\u0001\u0000\u0000\u0000\u07e2\u07e0\u0001\u0000\u0000\u0000"+
54027 		"\u07e2\u07e3\u0001\u0000\u0000\u0000\u07e3\u0101\u0001\u0000\u0000\u0000"+
54028 		"\u07e4\u07e2\u0001\u0000\u0000\u0000\u07e5\u07e6\u00053\u0000\u0000\u07e6"+
54029 		"\u07e7\u0007\u001c\u0000\u0000\u07e7\u07e8\u00038\u001c\u0000\u07e8\u07e9"+
54030 		"\u0003\u0226\u0113\u0000\u07e9\u07ea\u0003\u022a\u0115\u0000\u07ea\u0103"+
54031 		"\u0001\u0000\u0000\u0000\u07eb\u07ec\u00053\u0000\u0000\u07ec\u07ed\u0005"+
54032 		"F\u0000\u0000\u07ed\u07ee\u00036\u001b\u0000\u07ee\u07ef\u0003\u0214\u010a"+
54033 		"\u0000\u07ef\u07f0\u0003\u0216\u010b\u0000\u07f0\u0105\u0001\u0000\u0000"+
54034 		"\u0000\u07f1\u07f2\u00053\u0000\u0000\u07f2\u07f3\u0005J\u0000\u0000\u07f3"+
54035 		"\u07f4\u0003:\u001d\u0000\u07f4\u07f5\u0003\u0234\u011a\u0000\u07f5\u0107"+
54036 		"\u0001\u0000\u0000\u0000\u07f6\u07f7\u00053\u0000\u0000\u07f7\u07f8\u0005"+
54037 		"G\u0000\u0000\u07f8\u07f9\u0003<\u001e\u0000\u07f9\u07fa\u0005a\u0000"+
54038 		"\u0000\u07fa\u07fb\u0003\u0242\u0121\u0000\u07fb\u07fc\u0003\u023c\u011e"+
54039 		"\u0000\u07fc\u0109\u0001\u0000\u0000\u0000\u07fd\u07fe\u00053\u0000\u0000"+
54040 		"\u07fe\u07ff\u0005\u017b\u0000\u0000\u07ff\u0803\u0003>\u001f\u0000\u0800"+
54041 		"\u0802\u0003\u0244\u0122\u0000\u0801\u0800\u0001\u0000\u0000\u0000\u0802"+
54042 		"\u0805\u0001\u0000\u0000\u0000\u0803\u0801\u0001\u0000\u0000\u0000\u0803"+
54043 		"\u0804\u0001\u0000\u0000\u0000\u0804\u010b\u0001\u0000\u0000\u0000\u0805"+
54044 		"\u0803\u0001\u0000\u0000\u0000\u0806\u0807\u00053\u0000\u0000\u0807\u0808"+
54045 		"\u0005\u015a\u0000\u0000\u0808\u080c\u0003F#\u0000\u0809\u080a\u0005a"+
54046 		"\u0000\u0000\u080a\u080b\u0005\u016e\u0000\u0000\u080b\u080d\u0003B!\u0000"+
54047 		"\u080c\u0809\u0001\u0000\u0000\u0000\u080c\u080d\u0001\u0000\u0000\u0000"+
54048 		"\u080d\u080f\u0001\u0000\u0000\u0000\u080e\u0810\u0003\u028c\u0146\u0000"+
54049 		"\u080f\u080e\u0001\u0000\u0000\u0000\u080f\u0810\u0001\u0000\u0000\u0000"+
54050 		"\u0810\u010d\u0001\u0000\u0000\u0000\u0811\u0812\u00053\u0000\u0000\u0812"+
54051 		"\u0813\u00056\u0000\u0000\u0813\u0814\u00034\u001a\u0000\u0814\u0816\u0005"+
54052 		"\u0283\u0000\u0000\u0815\u0817\u0003\u0368\u01b4\u0000\u0816\u0815\u0001"+
54053 		"\u0000\u0000\u0000\u0816\u0817\u0001\u0000\u0000\u0000\u0817\u0818\u0001"+
54054 		"\u0000\u0000\u0000\u0818\u0819\u0003\u00cae\u0000\u0819\u010f\u0001\u0000"+
54055 		"\u0000\u0000\u081a\u081b\u00054\u0000\u0000\u081b\u081d\u0005;\u0000\u0000"+
54056 		"\u081c\u081e\u0003\u00deo\u0000\u081d\u081c\u0001\u0000\u0000\u0000\u081d"+
54057 		"\u081e\u0001\u0000\u0000\u0000\u081e\u081f\u0001\u0000\u0000\u0000\u081f"+
54058 		"\u0820\u0003T*\u0000\u0820\u0111\u0001\u0000\u0000\u0000\u0821\u0822\u0005"+
54059 		"4\u0000\u0000\u0822\u0824\u0005>\u0000\u0000\u0823\u0825\u0003\u00deo"+
54060 		"\u0000\u0824\u0823\u0001\u0000\u0000\u0000\u0824\u0825\u0001\u0000\u0000"+
54061 		"\u0000\u0825\u0826\u0001\u0000\u0000\u0000\u0826\u0827\u0003V+\u0000\u0827"+
54062 		"\u0828\u0005a\u0000\u0000\u0828\u0829\u0003@ \u0000\u0829\u0113\u0001"+
54063 		"\u0000\u0000\u0000\u082a\u082b\u00054\u0000\u0000\u082b\u082d\u0005\u00cc"+
54064 		"\u0000\u0000\u082c\u082e\u0003\u00deo\u0000\u082d\u082c\u0001\u0000\u0000"+
54065 		"\u0000\u082d\u082e\u0001\u0000\u0000\u0000\u082e\u082f\u0001\u0000\u0000"+
54066 		"\u0000\u082f\u0834\u00032\u0019\u0000\u0830\u0831\u0005%\u0000\u0000\u0831"+
54067 		"\u0833\u00032\u0019\u0000\u0832\u0830\u0001\u0000\u0000\u0000\u0833\u0836"+
54068 		"\u0001\u0000\u0000\u0000\u0834\u0832\u0001\u0000\u0000\u0000\u0834\u0835"+
54069 		"\u0001\u0000\u0000\u0000\u0835\u0115\u0001\u0000\u0000\u0000\u0836\u0834"+
54070 		"\u0001\u0000\u0000\u0000\u0837\u0838\u00054\u0000\u0000\u0838\u083a\u0005"+
54071 		"F\u0000\u0000\u0839\u083b\u0003\u00deo\u0000\u083a\u0839\u0001\u0000\u0000"+
54072 		"\u0000\u083a\u083b\u0001\u0000\u0000\u0000\u083b\u083c\u0001\u0000\u0000"+
54073 		"\u0000\u083c\u0841\u00036\u001b\u0000\u083d\u083e\u0005%\u0000\u0000\u083e"+
54074 		"\u0840\u00036\u001b\u0000\u083f\u083d\u0001\u0000\u0000\u0000\u0840\u0843"+
54075 		"\u0001\u0000\u0000\u0000\u0841\u083f\u0001\u0000\u0000\u0000\u0841\u0842"+
54076 		"\u0001\u0000\u0000\u0000\u0842\u0117\u0001\u0000\u0000\u0000\u0843\u0841"+
54077 		"\u0001\u0000\u0000\u0000\u0844\u0845\u00054\u0000\u0000\u0845\u0847\u0007"+
54078 		"\u001c\u0000\u0000\u0846\u0848\u0003\u00deo\u0000\u0847\u0846\u0001\u0000"+
54079 		"\u0000\u0000\u0847\u0848\u0001\u0000\u0000\u0000\u0848\u0849\u0001\u0000"+
54080 		"\u0000\u0000\u0849\u084e\u00038\u001c\u0000\u084a\u084b\u0005%\u0000\u0000"+
54081 		"\u084b\u084d\u00038\u001c\u0000\u084c\u084a\u0001\u0000\u0000\u0000\u084d"+
54082 		"\u0850\u0001\u0000\u0000\u0000\u084e\u084c\u0001\u0000\u0000\u0000\u084e"+
54083 		"\u084f\u0001\u0000\u0000\u0000\u084f\u0119\u0001\u0000\u0000\u0000\u0850"+
54084 		"\u084e\u0001\u0000\u0000\u0000\u0851\u0852\u00054\u0000\u0000\u0852\u0854"+
54085 		"\u0005J\u0000\u0000\u0853\u0855\u0003\u00deo\u0000\u0854\u0853\u0001\u0000"+
54086 		"\u0000\u0000\u0854\u0855\u0001\u0000\u0000\u0000\u0855\u0856\u0001\u0000"+
54087 		"\u0000\u0000\u0856\u085b\u0003:\u001d\u0000\u0857\u0858\u0005%\u0000\u0000"+
54088 		"\u0858\u085a\u0003:\u001d\u0000\u0859\u0857\u0001\u0000\u0000\u0000\u085a"+
54089 		"\u085d\u0001\u0000\u0000\u0000\u085b\u0859\u0001\u0000\u0000\u0000\u085b"+
54090 		"\u085c\u0001\u0000\u0000\u0000\u085c\u011b\u0001\u0000\u0000\u0000\u085d"+
54091 		"\u085b\u0001\u0000\u0000\u0000\u085e\u085f\u00054\u0000\u0000\u085f\u0861"+
54092 		"\u0005G\u0000\u0000\u0860\u0862\u0003\u00deo\u0000\u0861\u0860\u0001\u0000"+
54093 		"\u0000\u0000\u0861\u0862\u0001\u0000\u0000\u0000\u0862\u0863\u0001\u0000"+
54094 		"\u0000\u0000\u0863\u0868\u0003<\u001e\u0000\u0864\u0865\u0005%\u0000\u0000"+
54095 		"\u0865\u0867\u0003<\u001e\u0000\u0866\u0864\u0001\u0000\u0000\u0000\u0867"+
54096 		"\u086a\u0001\u0000\u0000\u0000\u0868\u0866\u0001\u0000\u0000\u0000\u0868"+
54097 		"\u0869\u0001\u0000\u0000\u0000\u0869\u0871\u0001\u0000\u0000\u0000\u086a"+
54098 		"\u0868\u0001\u0000\u0000\u0000\u086b\u086f\u0005a\u0000\u0000\u086c\u0870"+
54099 		"\u0005\u00cc\u0000\u0000\u086d\u086e\u0005r\u0000\u0000\u086e\u0870\u0005"+
54100 		"\u013c\u0000\u0000\u086f\u086c\u0001\u0000\u0000\u0000\u086f\u086d\u0001"+
54101 		"\u0000\u0000\u0000\u0870\u0872\u0001\u0000\u0000\u0000\u0871\u086b\u0001"+
54102 		"\u0000\u0000\u0000\u0871\u0872\u0001\u0000\u0000\u0000\u0872\u011d\u0001"+
54103 		"\u0000\u0000\u0000\u0873\u0874\u00054\u0000\u0000\u0874\u0876\u0005\u017b"+
54104 		"\u0000\u0000\u0875\u0877\u0003\u00deo\u0000\u0876\u0875\u0001\u0000\u0000"+
54105 		"\u0000\u0876\u0877\u0001\u0000\u0000\u0000\u0877\u0878\u0001\u0000\u0000"+
54106 		"\u0000\u0878\u087d\u0003>\u001f\u0000\u0879\u087a\u0005%\u0000\u0000\u087a"+
54107 		"\u087c\u0003>\u001f\u0000\u087b\u0879\u0001\u0000\u0000\u0000\u087c\u087f"+
54108 		"\u0001\u0000\u0000\u0000\u087d\u087b\u0001\u0000\u0000\u0000\u087d\u087e"+
54109 		"\u0001\u0000\u0000\u0000\u087e\u011f\u0001\u0000\u0000\u0000\u087f\u087d"+
54110 		"\u0001\u0000\u0000\u0000\u0880\u0881\u00054\u0000\u0000\u0881\u0882\u0005"+
54111 		"\u015a\u0000\u0000\u0882\u0883\u0003F#\u0000\u0883\u0121\u0001\u0000\u0000"+
54112 		"\u0000\u0884\u0885\u00054\u0000\u0000\u0885\u0887\u00056\u0000\u0000\u0886"+
54113 		"\u0888\u0003\u00deo\u0000\u0887\u0886\u0001\u0000\u0000\u0000\u0887\u0888"+
54114 		"\u0001\u0000\u0000\u0000\u0888\u0889\u0001\u0000\u0000\u0000\u0889\u088a"+
54115 		"\u00034\u001a\u0000\u088a\u0123\u0001\u0000\u0000\u0000\u088b\u088c\u0005"+
54116 		"5\u0000\u0000\u088c\u088d\u0005;\u0000\u0000\u088d\u088e\u0003@ \u0000"+
54117 		"\u088e\u0125\u0001\u0000\u0000\u0000\u088f\u0890\u00050\u0000\u0000\u0890"+
54118 		"\u0891\u0005\u02ae\u0000\u0000\u0891\u08a0\u0003@ \u0000\u0892\u0894\u0005"+
54119 		"\u001f\u0000\u0000\u0893\u0892\u0001\u0000\u0000\u0000\u0893\u0894\u0001"+
54120 		"\u0000\u0000\u0000\u0894\u0895\u0001\u0000\u0000\u0000\u0895\u089a\u0003"+
54121 		"V+\u0000\u0896\u0897\u0005%\u0000\u0000\u0897\u0899\u0003V+\u0000\u0898"+
54122 		"\u0896\u0001\u0000\u0000\u0000\u0899\u089c\u0001\u0000\u0000\u0000\u089a"+
54123 		"\u0898\u0001\u0000\u0000\u0000\u089a\u089b\u0001\u0000\u0000\u0000\u089b"+
54124 		"\u089e\u0001\u0000\u0000\u0000\u089c\u089a\u0001\u0000\u0000\u0000\u089d"+
54125 		"\u089f\u0005 \u0000\u0000\u089e\u089d\u0001\u0000\u0000\u0000\u089e\u089f"+
54126 		"\u0001\u0000\u0000\u0000\u089f\u08a1\u0001\u0000\u0000\u0000\u08a0\u0893"+
54127 		"\u0001\u0000\u0000\u0000\u08a0\u08a1\u0001\u0000\u0000\u0000\u08a1\u08a3"+
54128 		"\u0001\u0000\u0000\u0000\u08a2\u08a4\u0003\u0128\u0094\u0000\u08a3\u08a2"+
54129 		"\u0001\u0000\u0000\u0000\u08a3\u08a4\u0001\u0000\u0000\u0000\u08a4\u0127"+
54130 		"\u0001\u0000\u0000\u0000\u08a5\u08a7\u0005M\u0000\u0000\u08a6\u08a8\u0003"+
54131 		"\u012a\u0095\u0000\u08a7\u08a6\u0001\u0000\u0000\u0000\u08a7\u08a8\u0001"+
54132 		"\u0000\u0000\u0000\u08a8\u08aa\u0001\u0000\u0000\u0000\u08a9\u08ab\u0003"+
54133 		"\u012c\u0096\u0000\u08aa\u08a9\u0001\u0000\u0000\u0000\u08aa\u08ab\u0001"+
54134 		"\u0000\u0000\u0000\u08ab\u0129\u0001\u0000\u0000\u0000\u08ac\u08b1\u0005"+
54135 		"\u02af\u0000\u0000\u08ad\u08ae\u0005\u02b0\u0000\u0000\u08ae\u08af\u0005"+
54136 		"\u02b8\u0000\u0000\u08af\u08b1\u0007\u001d\u0000\u0000\u08b0\u08ac\u0001"+
54137 		"\u0000\u0000\u0000\u08b0\u08ad\u0001\u0000\u0000\u0000\u08b1\u08b5\u0001"+
54138 		"\u0000\u0000\u0000\u08b2\u08b3\u0005\u02b4\u0000\u0000\u08b3\u08b4\u0005"+
54139 		"\u0018\u0000\u0000\u08b4\u08b6\u0007\u0000\u0000\u0000\u08b5\u08b2\u0001"+
54140 		"\u0000\u0000\u0000\u08b5\u08b6\u0001\u0000\u0000\u0000\u08b6\u08c7\u0001"+
54141 		"\u0000\u0000\u0000\u08b7\u08c4\u0005\u02b1\u0000\u0000\u08b8\u08b9\u0005"+
54142 		"a\u0000\u0000\u08b9\u08ba\u0005\u00de\u0000\u0000\u08ba\u08bb\u0005\u001f"+
54143 		"\u0000\u0000\u08bb\u08c0\u0005\u02b8\u0000\u0000\u08bc\u08bd\u0005%\u0000"+
54144 		"\u0000\u08bd\u08bf\u0005\u02b8\u0000\u0000\u08be\u08bc\u0001\u0000\u0000"+
54145 		"\u0000\u08bf\u08c2\u0001\u0000\u0000\u0000\u08c0\u08be\u0001\u0000\u0000"+
54146 		"\u0000\u08c0\u08c1\u0001\u0000\u0000\u0000\u08c1\u08c3\u0001\u0000\u0000"+
54147 		"\u0000\u08c2\u08c0\u0001\u0000\u0000\u0000\u08c3\u08c5\u0005 \u0000\u0000"+
54148 		"\u08c4\u08b8\u0001\u0000\u0000\u0000\u08c4\u08c5\u0001\u0000\u0000\u0000"+
54149 		"\u08c5\u08c7\u0001\u0000\u0000\u0000\u08c6\u08b0\u0001\u0000\u0000\u0000"+
54150 		"\u08c6\u08b7\u0001\u0000\u0000\u0000\u08c7\u012b\u0001\u0000\u0000\u0000"+
54151 		"\u08c8\u08ca\u0005%\u0000\u0000\u08c9\u08c8\u0001\u0000\u0000\u0000\u08c9"+
54152 		"\u08ca\u0001\u0000\u0000\u0000\u08ca\u08cb\u0001\u0000\u0000\u0000\u08cb"+
54153 		"\u08cd\u0003\u012e\u0097\u0000\u08cc\u08c9\u0001\u0000\u0000\u0000\u08cd"+
54154 		"\u08ce\u0001\u0000\u0000\u0000\u08ce\u08cc\u0001\u0000\u0000\u0000\u08ce"+
54155 		"\u08cf\u0001\u0000\u0000\u0000\u08cf\u012d\u0001\u0000\u0000\u0000\u08d0"+
54156 		"\u08de\u0005r\u0000\u0000\u08d1\u08de\u0005=\u0000\u0000\u08d2\u08de\u0005"+
54157 		">\u0000\u0000\u08d3\u08de\u0005\u02b2\u0000\u0000\u08d4\u08d5\u0005\u025d"+
54158 		"\u0000\u0000\u08d5\u08d6\u0005\u0018\u0000\u0000\u08d6\u08de\u0007\u0000"+
54159 		"\u0000\u0000\u08d7\u08d8\u0005\u0113\u0000\u0000\u08d8\u08d9\u0005\u0018"+
54160 		"\u0000\u0000\u08d9\u08de\u0005\u02b8\u0000\u0000\u08da\u08db\u0005\u02b3"+
54161 		"\u0000\u0000\u08db\u08dc\u0005\u0018\u0000\u0000\u08dc\u08de\u0007\u0000"+
54162 		"\u0000\u0000\u08dd\u08d0\u0001\u0000\u0000\u0000\u08dd\u08d1\u0001\u0000"+
54163 		"\u0000\u0000\u08dd\u08d2\u0001\u0000\u0000\u0000\u08dd\u08d3\u0001\u0000"+
54164 		"\u0000\u0000\u08dd\u08d4\u0001\u0000\u0000\u0000\u08dd\u08d7\u0001\u0000"+
54165 		"\u0000\u0000\u08dd\u08da\u0001\u0000\u0000\u0000\u08de\u012f\u0001\u0000"+
54166 		"\u0000\u0000\u08df\u08e0\u0005`\u0000\u0000\u08e0\u08e2\u0005\u0107\u0000"+
54167 		"\u0000\u08e1\u08df\u0001\u0000\u0000\u0000\u08e1\u08e2\u0001\u0000\u0000"+
54168 		"\u0000\u08e2\u0131\u0001\u0000\u0000\u0000\u08e3\u08e4\u0003\u0134\u009a"+
54169 		"\u0000\u08e4\u08e5\u0003\u0188\u00c4\u0000\u08e5\u08e6\u0003\u018a\u00c5"+
54170 		"\u0000\u08e6\u0133\u0001\u0000\u0000\u0000\u08e7\u08e8\u0005\u001f\u0000"+
54171 		"\u0000\u08e8\u08ed\u0003\u0136\u009b\u0000\u08e9\u08ea\u0005%\u0000\u0000"+
54172 		"\u08ea\u08ec\u0003\u0136\u009b\u0000\u08eb\u08e9\u0001\u0000\u0000\u0000"+
54173 		"\u08ec\u08ef\u0001\u0000\u0000\u0000\u08ed\u08eb\u0001\u0000\u0000\u0000"+
54174 		"\u08ed\u08ee\u0001\u0000\u0000\u0000\u08ee\u08f2\u0001\u0000\u0000\u0000"+
54175 		"\u08ef\u08ed\u0001\u0000\u0000\u0000\u08f0\u08f1\u0005%\u0000\u0000\u08f1"+
54176 		"\u08f3\u0003\u0186\u00c3\u0000\u08f2\u08f0\u0001\u0000\u0000\u0000\u08f2"+
54177 		"\u08f3\u0001\u0000\u0000\u0000\u08f3\u08f4\u0001\u0000\u0000\u0000\u08f4"+
54178 		"\u08f5\u0005 \u0000\u0000\u08f5\u0135\u0001\u0000\u0000\u0000\u08f6\u08fc"+
54179 		"\u0003\u0138\u009c\u0000\u08f7\u08fc\u0003\u016e\u00b7\u0000\u08f8\u08fc"+
54180 		"\u0003\u0170\u00b8\u0000\u08f9\u08fc\u0003\u0172\u00b9\u0000\u08fa\u08fc"+
54181 		"\u0003\u0180\u00c0\u0000\u08fb\u08f6\u0001\u0000\u0000\u0000\u08fb\u08f7"+
54182 		"\u0001\u0000\u0000\u0000\u08fb\u08f8\u0001\u0000\u0000\u0000\u08fb\u08f9"+
54183 		"\u0001\u0000\u0000\u0000\u08fb\u08fa\u0001\u0000\u0000\u0000\u08fc\u0137"+
54184 		"\u0001\u0000\u0000\u0000\u08fd\u08fe\u0003H$\u0000\u08fe\u0902\u0003\u0094"+
54185 		"J\u0000\u08ff\u0901\u0003\u013a\u009d\u0000\u0900\u08ff\u0001\u0000\u0000"+
54186 		"\u0000\u0901\u0904\u0001\u0000\u0000\u0000\u0902\u0900\u0001\u0000\u0000"+
54187 		"\u0000\u0902\u0903\u0001\u0000\u0000\u0000\u0903\u0905\u0001\u0000\u0000"+
54188 		"\u0000\u0904\u0902\u0001\u0000\u0000\u0000\u0905\u0907\u0003\u016c\u00b6"+
54189 		"\u0000\u0906\u0908\u0003\u0162\u00b1\u0000\u0907\u0906\u0001\u0000\u0000"+
54190 		"\u0000\u0907\u0908\u0001\u0000\u0000\u0000\u0908\u0139\u0001\u0000\u0000"+
54191 		"\u0000\u0909\u093f\u0005\u0106\u0000\u0000\u090a\u090b\u0005\u00f6\u0000"+
54192 		"\u0000\u090b\u093f\u0003Z-\u0000\u090c\u093f\u0005\u0128\u0000\u0000\u090d"+
54193 		"\u090e\u0005\u0112\u0000\u0000\u090e\u090f\u0005M\u0000\u0000\u090f\u0910"+
54194 		"\u0005\u001f\u0000\u0000\u0910\u0911\u0005F\u0000\u0000\u0911\u0912\u0005"+
54195 		"\u0018\u0000\u0000\u0912\u0913\u0005\u02b7\u0000\u0000\u0913\u093f\u0005"+
54196 		" \u0000\u0000\u0914\u0915\u0005?\u0000\u0000\u0915\u0917\u0003\u00cae"+
54197 		"\u0000\u0916\u0914\u0001\u0000\u0000\u0000\u0916\u0917\u0001\u0000\u0000"+
54198 		"\u0000\u0917\u0918\u0001\u0000\u0000\u0000\u0918\u0919\u0005\u009a\u0000"+
54199 		"\u0000\u0919\u093f\u0003b1\u0000\u091a\u0920\u0005\u010c\u0000\u0000\u091b"+
54200 		"\u091c\u0005\u001f\u0000\u0000\u091c\u091d\u0005\u02b8\u0000\u0000\u091d"+
54201 		"\u091e\u0005%\u0000\u0000\u091e\u091f\u0005\u02b8\u0000\u0000\u091f\u0921"+
54202 		"\u0005 \u0000\u0000\u0920\u091b\u0001\u0000\u0000\u0000\u0920\u0921\u0001"+
54203 		"\u0000\u0000\u0000\u0921\u093f\u0001\u0000\u0000\u0000\u0922\u0923\u0005"+
54204 		"k\u0000\u0000\u0923\u0924\u0005f\u0000\u0000\u0924\u093f\u0005\u0123\u0000"+
54205 		"\u0000\u0925\u0926\u0005\u00e7\u0000\u0000\u0926\u0927\u0005\u00e4\u0000"+
54206 		"\u0000\u0927\u0928\u0005`\u0000\u0000\u0928\u0929\u0005\u00e0\u0000\u0000"+
54207 		"\u0929\u092b\u0007\u001e\u0000\u0000\u092a\u092c\u0005\u00db\u0000\u0000"+
54208 		"\u092b\u092a\u0001\u0000\u0000\u0000\u092b\u092c\u0001\u0000\u0000\u0000"+
54209 		"\u092c\u093f\u0001\u0000\u0000\u0000\u092d\u092f\u0005k\u0000\u0000\u092e"+
54210 		"\u092d\u0001\u0000\u0000\u0000\u092e\u092f\u0001\u0000\u0000\u0000\u092f"+
54211 		"\u0930\u0001\u0000\u0000\u0000\u0930\u093f\u0005l\u0000\u0000\u0931\u093f"+
54212 		"\u0005\u0125\u0000\u0000\u0932\u0933\u0005\u0104\u0000\u0000\u0933\u0934"+
54213 		"\u0005M\u0000\u0000\u0934\u093f\u0003\u013c\u009e\u0000\u0935\u093a\u0003"+
54214 		"\u013e\u009f\u0000\u0936\u0937\u0005%\u0000\u0000\u0937\u0939\u0003\u013e"+
54215 		"\u009f\u0000\u0938\u0936\u0001\u0000\u0000\u0000\u0939\u093c\u0001\u0000"+
54216 		"\u0000\u0000\u093a\u0938\u0001\u0000\u0000\u0000\u093a\u093b\u0001\u0000"+
54217 		"\u0000\u0000\u093b\u093f\u0001\u0000\u0000\u0000\u093c\u093a\u0001\u0000"+
54218 		"\u0000\u0000\u093d\u093f\u0003\u0162\u00b1\u0000\u093e\u0909\u0001\u0000"+
54219 		"\u0000\u0000\u093e\u090a\u0001\u0000\u0000\u0000\u093e\u090c\u0001\u0000"+
54220 		"\u0000\u0000\u093e\u090d\u0001\u0000\u0000\u0000\u093e\u0916\u0001\u0000"+
54221 		"\u0000\u0000\u093e\u091a\u0001\u0000\u0000\u0000\u093e\u0922\u0001\u0000"+
54222 		"\u0000\u0000\u093e\u0925\u0001\u0000\u0000\u0000\u093e\u092e\u0001\u0000"+
54223 		"\u0000\u0000\u093e\u0931\u0001\u0000\u0000\u0000\u093e\u0932\u0001\u0000"+
54224 		"\u0000\u0000\u093e\u0935\u0001\u0000\u0000\u0000\u093e\u093d\u0001\u0000"+
54225 		"\u0000\u0000\u093f\u013b\u0001\u0000\u0000\u0000\u0940\u0941\u0005\u001f"+
54226 		"\u0000\u0000\u0941\u0942\u0005\u0182\u0000\u0000\u0942\u0943\u0005\u0018"+
54227 		"\u0000\u0000\u0943\u0944\u0003\u00cae\u0000\u0944\u0945\u0005%\u0000\u0000"+
54228 		"\u0945\u0946\u0005\u0188\u0000\u0000\u0946\u0947\u0005\u0018\u0000\u0000"+
54229 		"\u0947\u0948\u0007\u001f\u0000\u0000\u0948\u0949\u0005%\u0000\u0000\u0949"+
54230 		"\u094a\u0005\u00f1\u0000\u0000\u094a\u094b\u0005\u0018\u0000\u0000\u094b"+
54231 		"\u094c\u0005\u02b7\u0000\u0000\u094c\u094d\u0005 \u0000\u0000\u094d\u013d"+
54232 		"\u0001\u0000\u0000\u0000\u094e\u094f\u0005?\u0000\u0000\u094f\u0951\u0003"+
54233 		"X,\u0000\u0950\u094e\u0001\u0000\u0000\u0000\u0950\u0951\u0001\u0000\u0000"+
54234 		"\u0000\u0951\u0955\u0001\u0000\u0000\u0000\u0952\u0956\u0003\u0146\u00a3"+
54235 		"\u0000\u0953\u0956\u0003\u015a\u00ad\u0000\u0954\u0956\u0003\u0160\u00b0"+
54236 		"\u0000\u0955\u0952\u0001\u0000\u0000\u0000\u0955\u0953\u0001\u0000\u0000"+
54237 		"\u0000\u0955\u0954\u0001\u0000\u0000\u0000\u0956\u013f\u0001\u0000\u0000"+
54238 		"\u0000\u0957\u0958\u0005?\u0000\u0000\u0958\u095a\u0003X,\u0000\u0959"+
54239 		"\u0957\u0001\u0000\u0000\u0000\u0959\u095a\u0001\u0000\u0000\u0000\u095a"+
54240 		"\u095e\u0001\u0000\u0000\u0000\u095b\u095f\u0003\u0146\u00a3\u0000\u095c"+
54241 		"\u095f\u0003\u0142\u00a1\u0000\u095d\u095f\u0003\u0160\u00b0\u0000\u095e"+
54242 		"\u095b\u0001\u0000\u0000\u0000\u095e\u095c\u0001\u0000\u0000\u0000\u095e"+
54243 		"\u095d\u0001\u0000\u0000\u0000\u095f\u0141\u0001\u0000\u0000\u0000\u0960"+
54244 		"\u0961\u0005B\u0000\u0000\u0961\u0963\u0005C\u0000\u0000\u0962\u0960\u0001"+
54245 		"\u0000\u0000\u0000\u0962\u0963\u0001\u0000\u0000\u0000\u0963\u0964\u0001"+
54246 		"\u0000\u0000\u0000\u0964\u0969\u0003@ \u0000\u0965\u0966\u0005\u001f\u0000"+
54247 		"\u0000\u0966\u0967\u0003H$\u0000\u0967\u0968\u0005 \u0000\u0000\u0968"+
54248 		"\u096a\u0001\u0000\u0000\u0000\u0969\u0965\u0001\u0000\u0000\u0000\u0969"+
54249 		"\u096a\u0001\u0000\u0000\u0000\u096a\u096e\u0001\u0000\u0000\u0000\u096b"+
54250 		"\u096d\u0003\u0144\u00a2\u0000\u096c\u096b\u0001\u0000\u0000\u0000\u096d"+
54251 		"\u0970\u0001\u0000\u0000\u0000\u096e\u096c\u0001\u0000\u0000\u0000\u096e"+
54252 		"\u096f\u0001\u0000\u0000\u0000\u096f\u0143\u0001\u0000\u0000\u0000\u0970"+
54253 		"\u096e\u0001\u0000\u0000\u0000\u0971\u0972\u0005a\u0000\u0000\u0972\u0976"+
54254 		"\u00051\u0000\u0000\u0973\u0974\u0005\u00e8\u0000\u0000\u0974\u0977\u0005"+
54255 		"\u00f0\u0000\u0000\u0975\u0977\u0005\u00e5\u0000\u0000\u0976\u0973\u0001"+
54256 		"\u0000\u0000\u0000\u0976\u0975\u0001\u0000\u0000\u0000\u0977\u0980\u0001"+
54257 		"\u0000\u0000\u0000\u0978\u0979\u0005a\u0000\u0000\u0979\u097a\u00050\u0000"+
54258 		"\u0000\u097a\u097b\u0005\u00e8\u0000\u0000\u097b\u0980\u0005\u00f0\u0000"+
54259 		"\u0000\u097c\u097d\u0005k\u0000\u0000\u097d\u097e\u0005f\u0000\u0000\u097e"+
54260 		"\u0980\u0005\u0123\u0000\u0000\u097f\u0971\u0001\u0000\u0000\u0000\u097f"+
54261 		"\u0978\u0001\u0000\u0000\u0000\u097f\u097c\u0001\u0000\u0000\u0000\u0980"+
54262 		"\u0145\u0001\u0000\u0000\u0000\u0981\u0984\u0003`0\u0000\u0982\u0984\u0005"+
54263 		"A\u0000\u0000\u0983\u0981\u0001\u0000\u0000\u0000\u0983\u0982\u0001\u0000"+
54264 		"\u0000\u0000\u0984\u0987\u0001\u0000\u0000\u0000\u0985\u0988\u0003\u0148"+
54265 		"\u00a4\u0000\u0986\u0988\u0003\u0156\u00ab\u0000\u0987\u0985\u0001\u0000"+
54266 		"\u0000\u0000\u0987\u0986\u0001\u0000\u0000\u0000\u0988\u0147\u0001\u0000"+
54267 		"\u0000\u0000\u0989\u098b\u0003\u014a\u00a5\u0000\u098a\u0989\u0001\u0000"+
54268 		"\u0000\u0000\u098a\u098b\u0001\u0000\u0000\u0000\u098b\u098d\u0001\u0000"+
54269 		"\u0000\u0000\u098c\u098e\u0003\u014c\u00a6\u0000\u098d\u098c\u0001\u0000"+
54270 		"\u0000\u0000\u098d\u098e\u0001\u0000\u0000\u0000\u098e\u0990\u0001\u0000"+
54271 		"\u0000\u0000\u098f\u0991\u0003\u014e\u00a7\u0000\u0990\u098f\u0001\u0000"+
54272 		"\u0000\u0000\u0990\u0991\u0001\u0000\u0000\u0000\u0991\u0149\u0001\u0000"+
54273 		"\u0000\u0000\u0992\u0993\u0007 \u0000\u0000\u0993\u014b\u0001\u0000\u0000"+
54274 		"\u0000\u0994\u09a3\u0005M\u0000\u0000\u0995\u0996\u0005\u0108\u0000\u0000"+
54275 		"\u0996\u0997\u0005\u0018\u0000\u0000\u0997\u09a4\u0005\u02b8\u0000\u0000"+
54276 		"\u0998\u0999\u0005\u001f\u0000\u0000\u0999\u099e\u0003\u00b2Y\u0000\u099a"+
54277 		"\u099b\u0005%\u0000\u0000\u099b\u099d\u0003\u00b2Y\u0000\u099c\u099a\u0001"+
54278 		"\u0000\u0000\u0000\u099d\u09a0\u0001\u0000\u0000\u0000\u099e\u099c\u0001"+
54279 		"\u0000\u0000\u0000\u099e\u099f\u0001\u0000\u0000\u0000\u099f\u09a1\u0001"+
54280 		"\u0000\u0000\u0000\u09a0\u099e\u0001\u0000\u0000\u0000\u09a1\u09a2\u0005"+
54281 		" \u0000\u0000\u09a2\u09a4\u0001\u0000\u0000\u0000\u09a3\u0995\u0001\u0000"+
54282 		"\u0000\u0000\u09a3\u0998\u0001\u0000\u0000\u0000\u09a4\u014d\u0001\u0000"+
54283 		"\u0000\u0000\u09a5\u09a9\u0003\u0150\u00a8\u0000\u09a6\u09a9\u0003\u0152"+
54284 		"\u00a9\u0000\u09a7\u09a9\u0003\u0154\u00aa\u0000\u09a8\u09a5\u0001\u0000"+
54285 		"\u0000\u0000\u09a8\u09a6\u0001\u0000\u0000\u0000\u09a8\u09a7\u0001\u0000"+
54286 		"\u0000\u0000\u09a9\u014f\u0001\u0000\u0000\u0000\u09aa\u09ab\u0005a\u0000"+
54287 		"\u0000\u09ab\u09ac\u00034\u001a\u0000\u09ac\u09ad\u0005\u001f\u0000\u0000"+
54288 		"\u09ad\u09ae\u0003H$\u0000\u09ae\u09af\u0005 \u0000\u0000\u09af\u0151"+
54289 		"\u0001\u0000\u0000\u0000\u09b0\u09b1\u0005a\u0000\u0000\u09b1\u09b2\u0003"+
54290 		"\u00cae\u0000\u09b2\u0153\u0001\u0000\u0000\u0000\u09b3\u09b4\u0005a\u0000"+
54291 		"\u0000\u09b4\u09b5\u0005\u02b7\u0000\u0000\u09b5\u0155\u0001\u0000\u0000"+
54292 		"\u0000\u09b6\u09bd\u0005\u00f5\u0000\u0000\u09b7\u09b8\u0005\u00f5\u0000"+
54293 		"\u0000\u09b8\u09ba\u0005\u010a\u0000\u0000\u09b9\u09bb\u0003\u0158\u00ac"+
54294 		"\u0000\u09ba\u09b9\u0001\u0000\u0000\u0000\u09ba\u09bb\u0001\u0000\u0000"+
54295 		"\u0000\u09bb\u09bd\u0001\u0000\u0000\u0000\u09bc\u09b6\u0001\u0000\u0000"+
54296 		"\u0000\u09bc\u09b7\u0001\u0000\u0000\u0000\u09bd\u0157\u0001\u0000\u0000"+
54297 		"\u0000\u09be\u09bf\u0005M\u0000\u0000\u09bf\u09c0\u0005\u001f\u0000\u0000"+
54298 		"\u09c0\u09c1\u0005\u0180\u0000\u0000\u09c1\u09c2\u0005\u0018\u0000\u0000"+
54299 		"\u09c2\u09c3\u0005\u02b8\u0000\u0000\u09c3\u09c4\u0005 \u0000\u0000\u09c4"+
54300 		"\u0159\u0001\u0000\u0000\u0000\u09c5\u09c6\u0005B\u0000\u0000\u09c6\u09c8"+
54301 		"\u0005C\u0000\u0000\u09c7\u09c5\u0001\u0000\u0000\u0000\u09c7\u09c8\u0001"+
54302 		"\u0000\u0000\u0000\u09c8\u09c9\u0001\u0000\u0000\u0000\u09c9\u09ca\u0005"+
54303 		"\u00eb\u0000\u0000\u09ca\u09cf\u0003@ \u0000\u09cb\u09cc\u0005\u001f\u0000"+
54304 		"\u0000\u09cc\u09cd\u0003H$\u0000\u09cd\u09ce\u0005 \u0000\u0000\u09ce"+
54305 		"\u09d0\u0001\u0000\u0000\u0000\u09cf\u09cb\u0001\u0000\u0000\u0000\u09cf"+
54306 		"\u09d0\u0001\u0000\u0000\u0000\u09d0\u09d4\u0001\u0000\u0000\u0000\u09d1"+
54307 		"\u09d3\u0003\u015c\u00ae\u0000\u09d2\u09d1\u0001\u0000\u0000\u0000\u09d3"+
54308 		"\u09d6\u0001\u0000\u0000\u0000\u09d4\u09d2\u0001\u0000\u0000\u0000\u09d4"+
54309 		"\u09d5\u0001\u0000\u0000\u0000\u09d5\u015b\u0001\u0000\u0000\u0000\u09d6"+
54310 		"\u09d4\u0001\u0000\u0000\u0000\u09d7\u09d8\u0005a\u0000\u0000\u09d8\u09d9"+
54311 		"\u0007!\u0000\u0000\u09d9\u09de\u0003\u015e\u00af\u0000\u09da\u09db\u0005"+
54312 		"k\u0000\u0000\u09db\u09dc\u0005f\u0000\u0000\u09dc\u09de\u0005\u0123\u0000"+
54313 		"\u0000\u09dd\u09d7\u0001\u0000\u0000\u0000\u09dd\u09da\u0001\u0000\u0000"+
54314 		"\u0000\u09de\u015d\u0001\u0000\u0000\u0000\u09df\u09e0\u0005\u00e8\u0000"+
54315 		"\u0000\u09e0\u09e5\u0005\u00f0\u0000\u0000\u09e1\u09e5\u0005\u00e5\u0000"+
54316 		"\u0000\u09e2\u09e3\u0005:\u0000\u0000\u09e3\u09e5\u0007\"\u0000\u0000"+
54317 		"\u09e4\u09df\u0001\u0000\u0000\u0000\u09e4\u09e1\u0001\u0000\u0000\u0000"+
54318 		"\u09e4\u09e2\u0001\u0000\u0000\u0000\u09e5\u015f\u0001\u0000\u0000\u0000"+
54319 		"\u09e6\u09ea\u0005\u00e6\u0000\u0000\u09e7\u09e8\u0005k\u0000\u0000\u09e8"+
54320 		"\u09e9\u0005f\u0000\u0000\u09e9\u09eb\u0005\u0123\u0000\u0000\u09ea\u09e7"+
54321 		"\u0001\u0000\u0000\u0000\u09ea\u09eb\u0001\u0000\u0000\u0000\u09eb\u09ec"+
54322 		"\u0001\u0000\u0000\u0000\u09ec\u09ed\u0005\u001f\u0000\u0000\u09ed\u09ee"+
54323 		"\u0003b1\u0000\u09ee\u09ef\u0005 \u0000\u0000\u09ef\u0161\u0001\u0000"+
54324 		"\u0000\u0000\u09f0\u09f1\u0005>\u0000\u0000\u09f1\u09f3\u0003V+\u0000"+
54325 		"\u09f2\u09f4\u0003\u014a\u00a5\u0000\u09f3\u09f2\u0001\u0000\u0000\u0000"+
54326 		"\u09f3\u09f4\u0001\u0000\u0000\u0000\u09f4\u09f6\u0001\u0000\u0000\u0000"+
54327 		"\u09f5\u09f7\u0003\u0164\u00b2\u0000\u09f6\u09f5\u0001\u0000\u0000\u0000"+
54328 		"\u09f6\u09f7\u0001\u0000\u0000\u0000\u09f7\u09f9\u0001\u0000\u0000\u0000"+
54329 		"\u09f8\u09fa\u0003\u0166\u00b3\u0000\u09f9\u09f8\u0001\u0000\u0000\u0000"+
54330 		"\u09f9\u09fa\u0001\u0000\u0000\u0000\u09fa\u09fc\u0001\u0000\u0000\u0000"+
54331 		"\u09fb\u09fd\u0003\u016a\u00b5\u0000\u09fc\u09fb\u0001\u0000\u0000\u0000"+
54332 		"\u09fc\u09fd\u0001\u0000\u0000\u0000\u09fd\u0163\u0001\u0000\u0000\u0000"+
54333 		"\u09fe\u09ff\u0005M\u0000\u0000\u09ff\u0a00\u0005\u001f\u0000\u0000\u0a00"+
54334 		"\u0a05\u0003\u00b2Y\u0000\u0a01\u0a02\u0005%\u0000\u0000\u0a02\u0a04\u0003"+
54335 		"\u00b2Y\u0000\u0a03\u0a01\u0001\u0000\u0000\u0000\u0a04\u0a07\u0001\u0000"+
54336 		"\u0000\u0000\u0a05\u0a03\u0001\u0000\u0000\u0000\u0a05\u0a06\u0001\u0000"+
54337 		"\u0000\u0000\u0a06\u0a08\u0001\u0000\u0000\u0000\u0a07\u0a05\u0001\u0000"+
54338 		"\u0000\u0000\u0a08\u0a09\u0005 \u0000\u0000\u0a09\u0165\u0001\u0000\u0000"+
54339 		"\u0000\u0a0a\u0a0e\u0003\u0150\u00a8\u0000\u0a0b\u0a0e\u0003\u0152\u00a9"+
54340 		"\u0000\u0a0c\u0a0e\u0003\u0168\u00b4\u0000\u0a0d\u0a0a\u0001\u0000\u0000"+
54341 		"\u0000\u0a0d\u0a0b\u0001\u0000\u0000\u0000\u0a0d\u0a0c\u0001\u0000\u0000"+
54342 		"\u0000\u0a0e\u0167\u0001\u0000\u0000\u0000\u0a0f\u0a10\u0005a\u0000\u0000"+
54343 		"\u0a10\u0a11\u0005\u009a\u0000\u0000\u0a11\u0169\u0001\u0000\u0000\u0000"+
54344 		"\u0a12\u0a16\u0005\u019a\u0000\u0000\u0a13\u0a17\u0003\u00cae\u0000\u0a14"+
54345 		"\u0a17\u00034\u001a\u0000\u0a15\u0a17\u0005\u02b7\u0000\u0000\u0a16\u0a13"+
54346 		"\u0001\u0000\u0000\u0000\u0a16\u0a14\u0001\u0000\u0000\u0000\u0a16\u0a15"+
54347 		"\u0001\u0000\u0000\u0000\u0a17\u016b\u0001\u0000\u0000\u0000\u0a18\u0a1d"+
54348 		"\u0003\u013e\u009f\u0000\u0a19\u0a1a\u0005%\u0000\u0000\u0a1a\u0a1c\u0003"+
54349 		"\u013e\u009f\u0000\u0a1b\u0a19\u0001\u0000\u0000\u0000\u0a1c\u0a1f\u0001"+
54350 		"\u0000\u0000\u0000\u0a1d\u0a1b\u0001\u0000\u0000\u0000\u0a1d\u0a1e\u0001"+
54351 		"\u0000\u0000\u0000\u0a1e\u0a21\u0001\u0000\u0000\u0000\u0a1f\u0a1d\u0001"+
54352 		"\u0000\u0000\u0000\u0a20\u0a18\u0001\u0000\u0000\u0000\u0a20\u0a21\u0001"+
54353 		"\u0000\u0000\u0000\u0a21\u016d\u0001\u0000\u0000\u0000\u0a22\u0a23\u0003"+
54354 		"H$\u0000\u0a23\u0a24\u0005`\u0000\u0000\u0a24\u0a2a\u0003b1\u0000\u0a25"+
54355 		"\u0a28\u0005\u011d\u0000\u0000\u0a26\u0a27\u0005k\u0000\u0000\u0a27\u0a29"+
54356 		"\u0005l\u0000\u0000\u0a28\u0a26\u0001\u0000\u0000\u0000\u0a28\u0a29\u0001"+
54357 		"\u0000\u0000\u0000\u0a29\u0a2b\u0001\u0000\u0000\u0000\u0a2a\u0a25\u0001"+
54358 		"\u0000\u0000\u0000\u0a2a\u0a2b\u0001\u0000\u0000\u0000\u0a2b\u0a2d\u0001"+
54359 		"\u0000\u0000\u0000\u0a2c\u0a2e\u0003\u0140\u00a0\u0000\u0a2d\u0a2c\u0001"+
54360 		"\u0000\u0000\u0000\u0a2d\u0a2e\u0001\u0000\u0000\u0000\u0a2e\u016f\u0001"+
54361 		"\u0000\u0000\u0000\u0a2f\u0a30\u0003\u00cae\u0000\u0a30\u0a31\u0005\u02b5"+
54362 		"\u0000\u0000\u0a31\u0a32\u0005\u0183\u0000\u0000\u0a32\u0a33\u0005f\u0000"+
54363 		"\u0000\u0a33\u0a34\u0005\u017f\u0000\u0000\u0a34\u0171\u0001\u0000\u0000"+
54364 		"\u0000\u0a35\u0a36\u0005?\u0000\u0000\u0a36\u0a38\u0003X,\u0000\u0a37"+
54365 		"\u0a35\u0001\u0000\u0000\u0000\u0a37\u0a38\u0001\u0000\u0000\u0000\u0a38"+
54366 		"\u0a3c\u0001\u0000\u0000\u0000\u0a39\u0a3d\u0003\u0174\u00ba\u0000\u0a3a"+
54367 		"\u0a3d\u0003\u017e\u00bf\u0000\u0a3b\u0a3d\u0003\u0160\u00b0\u0000\u0a3c"+
54368 		"\u0a39\u0001\u0000\u0000\u0000\u0a3c\u0a3a\u0001\u0000\u0000\u0000\u0a3c"+
54369 		"\u0a3b\u0001\u0000\u0000\u0000\u0a3d\u0173\u0001\u0000\u0000\u0000\u0a3e"+
54370 		"\u0a41\u0003\u0176\u00bb\u0000\u0a3f\u0a42\u0003\u0178\u00bc\u0000\u0a40"+
54371 		"\u0a42\u0003\u017a\u00bd\u0000\u0a41\u0a3f\u0001\u0000\u0000\u0000\u0a41"+
54372 		"\u0a40\u0001\u0000\u0000\u0000\u0a42\u0175\u0001\u0000\u0000\u0000\u0a43"+
54373 		"\u0a46\u0003`0\u0000\u0a44\u0a46\u0005A\u0000\u0000\u0a45\u0a43\u0001"+
54374 		"\u0000\u0000\u0000\u0a45\u0a44\u0001\u0000\u0000\u0000\u0a46\u0177\u0001"+
54375 		"\u0000\u0000\u0000\u0a47\u0a49\u0003\u014a\u00a5\u0000\u0a48\u0a47\u0001"+
54376 		"\u0000\u0000\u0000\u0a48\u0a49\u0001\u0000\u0000\u0000\u0a49\u0a4a\u0001"+
54377 		"\u0000\u0000\u0000\u0a4a\u0a4c\u0003P(\u0000\u0a4b\u0a4d\u0003\u014c\u00a6"+
54378 		"\u0000\u0a4c\u0a4b\u0001\u0000\u0000\u0000\u0a4c\u0a4d\u0001\u0000\u0000"+
54379 		"\u0000\u0a4d\u0a4f\u0001\u0000\u0000\u0000\u0a4e\u0a50\u0003\u014e\u00a7"+
54380 		"\u0000\u0a4f\u0a4e\u0001\u0000\u0000\u0000\u0a4f\u0a50\u0001\u0000\u0000"+
54381 		"\u0000\u0a50\u0179\u0001\u0000\u0000\u0000\u0a51\u0a54\u0005\u00f5\u0000"+
54382 		"\u0000\u0a52\u0a55\u0003P(\u0000\u0a53\u0a55\u0003\u017c\u00be\u0000\u0a54"+
54383 		"\u0a52\u0001\u0000\u0000\u0000\u0a54\u0a53\u0001\u0000\u0000\u0000\u0a55"+
54384 		"\u017b\u0001\u0000\u0000\u0000\u0a56\u0a57\u0005\u010a\u0000\u0000\u0a57"+
54385 		"\u0a58\u0003P(\u0000\u0a58\u0a59\u0003\u0158\u00ac\u0000\u0a59\u017d\u0001"+
54386 		"\u0000\u0000\u0000\u0a5a\u0a5b\u0005B\u0000\u0000\u0a5b\u0a5d\u0005C\u0000"+
54387 		"\u0000\u0a5c\u0a5a\u0001\u0000\u0000\u0000\u0a5c\u0a5d\u0001\u0000\u0000"+
54388 		"\u0000\u0a5d\u0a5e\u0001\u0000\u0000\u0000\u0a5e\u0a5f\u0003P(\u0000\u0a5f"+
54389 		"\u0a60\u0005\u00eb\u0000\u0000\u0a60\u0a61\u0003@ \u0000\u0a61\u0a65\u0003"+
54390 		"P(\u0000\u0a62\u0a64\u0003\u015c\u00ae\u0000\u0a63\u0a62\u0001\u0000\u0000"+
54391 		"\u0000\u0a64\u0a67\u0001\u0000\u0000\u0000\u0a65\u0a63\u0001\u0000\u0000"+
54392 		"\u0000\u0a65\u0a66\u0001\u0000\u0000\u0000\u0a66\u017f\u0001\u0000\u0000"+
54393 		"\u0000\u0a67\u0a65\u0001\u0000\u0000\u0000\u0a68\u0a69\u0005>\u0000\u0000"+
54394 		"\u0a69\u0a6a\u0003V+\u0000\u0a6a\u0a6d\u0003\u0182\u00c1\u0000\u0a6b\u0a6c"+
54395 		"\u0005M\u0000\u0000\u0a6c\u0a6e\u0003\u0184\u00c2\u0000\u0a6d\u0a6b\u0001"+
54396 		"\u0000\u0000\u0000\u0a6d\u0a6e\u0001\u0000\u0000\u0000\u0a6e\u0a70\u0001"+
54397 		"\u0000\u0000\u0000\u0a6f\u0a71\u0003\u0166\u00b3\u0000\u0a70\u0a6f\u0001"+
54398 		"\u0000\u0000\u0000\u0a70\u0a71\u0001\u0000\u0000\u0000\u0a71\u0a73\u0001"+
54399 		"\u0000\u0000\u0000\u0a72\u0a74\u0003\u016a\u00b5\u0000\u0a73\u0a72\u0001"+
54400 		"\u0000\u0000\u0000\u0a73\u0a74\u0001\u0000\u0000\u0000\u0a74\u0181\u0001"+
54401 		"\u0000\u0000\u0000\u0a75\u0a77\u0003\u014a\u00a5\u0000\u0a76\u0a75\u0001"+
54402 		"\u0000\u0000\u0000\u0a76\u0a77\u0001\u0000\u0000\u0000\u0a77\u0a78\u0001"+
54403 		"\u0000\u0000\u0000\u0a78\u0a81\u0003P(\u0000\u0a79\u0a7a\u0005\u00f4\u0000"+
54404 		"\u0000\u0a7a\u0a81\u0005\u00f7\u0000\u0000\u0a7b\u0a7d\u0005\u00f5\u0000"+
54405 		"\u0000\u0a7c\u0a7b\u0001\u0000\u0000\u0000\u0a7c\u0a7d\u0001\u0000\u0000"+
54406 		"\u0000\u0a7d\u0a7e\u0001\u0000\u0000\u0000\u0a7e\u0a7f\u0005\u00f7\u0000"+
54407 		"\u0000\u0a7f\u0a81\u0003P(\u0000\u0a80\u0a76\u0001\u0000\u0000\u0000\u0a80"+
54408 		"\u0a79\u0001\u0000\u0000\u0000\u0a80\u0a7c\u0001\u0000\u0000\u0000\u0a81"+
54409 		"\u0183\u0001\u0000\u0000\u0000\u0a82\u0a83\u0005\u001f\u0000\u0000\u0a83"+
54410 		"\u0a88\u0003\u00b2Y\u0000\u0a84\u0a85\u0005%\u0000\u0000\u0a85\u0a87\u0003"+
54411 		"\u00b2Y\u0000\u0a86\u0a84\u0001\u0000\u0000\u0000\u0a87\u0a8a\u0001\u0000"+
54412 		"\u0000\u0000\u0a88\u0a86\u0001\u0000\u0000\u0000\u0a88\u0a89\u0001\u0000"+
54413 		"\u0000\u0000\u0a89\u0a8b\u0001\u0000\u0000\u0000\u0a8a\u0a88\u0001\u0000"+
54414 		"\u0000\u0000\u0a8b\u0a8c\u0005 \u0000\u0000\u0a8c\u0185\u0001\u0000\u0000"+
54415 		"\u0000\u0a8d\u0a8e\u0005\u011c\u0000\u0000\u0a8e\u0a8f\u0005f\u0000\u0000"+
54416 		"\u0a8f\u0a90\u0005\u0189\u0000\u0000\u0a90\u0a91\u0005\u001f\u0000\u0000"+
54417 		"\u0a91\u0a92\u0003H$\u0000\u0a92\u0a93\u0005%\u0000\u0000\u0a93\u0a94"+
54418 		"\u0003H$\u0000\u0a94\u0a95\u0005 \u0000\u0000\u0a95\u0187\u0001\u0000"+
54419 		"\u0000\u0000\u0a96\u0a9e\u0005a\u0000\u0000\u0a97\u0a98\u00034\u001a\u0000"+
54420 		"\u0a98\u0a99\u0005\u001f\u0000\u0000\u0a99\u0a9a\u0003H$\u0000\u0a9a\u0a9b"+
54421 		"\u0005 \u0000\u0000\u0a9b\u0a9f\u0001\u0000\u0000\u0000\u0a9c\u0a9f\u0003"+
54422 		"\u00cae\u0000\u0a9d\u0a9f\u0005\u02b7\u0000\u0000\u0a9e\u0a97\u0001\u0000"+
54423 		"\u0000\u0000\u0a9e\u0a9c\u0001\u0000\u0000\u0000\u0a9e\u0a9d\u0001\u0000"+
54424 		"\u0000\u0000\u0a9f\u0aa1\u0001\u0000\u0000\u0000\u0aa0\u0a96\u0001\u0000"+
54425 		"\u0000\u0000\u0aa0\u0aa1\u0001\u0000\u0000\u0000\u0aa1\u0189\u0001\u0000"+
54426 		"\u0000\u0000\u0aa2\u0aa5\u0005\u018b\u0000\u0000\u0aa3\u0aa6\u0003\u00ca"+
54427 		"e\u0000\u0aa4\u0aa6\u0005\u02b7\u0000\u0000\u0aa5\u0aa3\u0001\u0000\u0000"+
54428 		"\u0000\u0aa5\u0aa4\u0001\u0000\u0000\u0000\u0aa6\u0aa8\u0001\u0000\u0000"+
54429 		"\u0000\u0aa7\u0aa2\u0001\u0000\u0000\u0000\u0aa7\u0aa8\u0001\u0000\u0000"+
54430 		"\u0000\u0aa8\u0ab0\u0001\u0000\u0000\u0000\u0aa9\u0aaa\u0005\u019a\u0000"+
54431 		"\u0000\u0aaa\u0aaf\u00034\u001a\u0000\u0aab\u0aac\u0003\u00cae\u0000\u0aac"+
54432 		"\u0aad\u0005\u02b7\u0000\u0000\u0aad\u0aaf\u0001\u0000\u0000\u0000\u0aae"+
54433 		"\u0aa9\u0001\u0000\u0000\u0000\u0aae\u0aab\u0001\u0000\u0000\u0000\u0aaf"+
54434 		"\u0ab1\u0001\u0000\u0000\u0000\u0ab0\u0aae\u0001\u0000\u0000\u0000\u0ab0"+
54435 		"\u0ab1\u0001\u0000\u0000\u0000\u0ab1\u0ab4\u0001\u0000\u0000\u0000\u0ab2"+
54436 		"\u0ab3\u0005M\u0000\u0000\u0ab3\u0ab5\u0003\u018c\u00c6\u0000\u0ab4\u0ab2"+
54437 		"\u0001\u0000\u0000\u0000\u0ab4\u0ab5\u0001\u0000\u0000\u0000\u0ab5\u018b"+
54438 		"\u0001\u0000\u0000\u0000\u0ab6\u0ab7\u0005\u001f\u0000\u0000\u0ab7\u0abc"+
54439 		"\u0003\u018e\u00c7\u0000\u0ab8\u0ab9\u0005%\u0000\u0000\u0ab9\u0abb\u0003"+
54440 		"\u018e\u00c7\u0000\u0aba\u0ab8\u0001\u0000\u0000\u0000\u0abb\u0abe\u0001"+
54441 		"\u0000\u0000\u0000\u0abc\u0aba\u0001\u0000\u0000\u0000\u0abc\u0abd\u0001"+
54442 		"\u0000\u0000\u0000\u0abd\u0abf\u0001\u0000\u0000\u0000\u0abe\u0abc\u0001"+
54443 		"\u0000\u0000\u0000\u0abf\u0ac0\u0005 \u0000\u0000\u0ac0\u018d\u0001\u0000"+
54444 		"\u0000\u0000\u0ac1\u0ac2\u0005\u0186\u0000\u0000\u0ac2\u0ac3\u0005\u0018"+
54445 		"\u0000\u0000\u0ac3\u0aca\u0007#\u0000\u0000\u0ac4\u0ac5\u0005a\u0000\u0000"+
54446 		"\u0ac5\u0ac6\u0005\u00de\u0000\u0000\u0ac6\u0ac7\u0005\u001f\u0000\u0000"+
54447 		"\u0ac7\u0ac8\u0003\u00c0`\u0000\u0ac8\u0ac9\u0005 \u0000\u0000\u0ac9\u0acb"+
54448 		"\u0001\u0000\u0000\u0000\u0aca\u0ac4\u0001\u0000\u0000\u0000\u0aca\u0acb"+
54449 		"\u0001\u0000\u0000\u0000\u0acb\u0af4\u0001\u0000\u0000\u0000\u0acc\u0acd"+
54450 		"\u0005\u019c\u0000\u0000\u0acd\u0ace\u0005\u0018\u0000\u0000\u0ace\u0af4"+
54451 		"\u0003\u00cae\u0000\u0acf\u0ad0\u0005\u019b\u0000\u0000\u0ad0\u0ad3\u0005"+
54452 		"\u0018\u0000\u0000\u0ad1\u0ad4\u0003Z-\u0000\u0ad2\u0ad4\u0005\u0185\u0000"+
54453 		"\u0000\u0ad3\u0ad1\u0001\u0000\u0000\u0000\u0ad3\u0ad2\u0001\u0000\u0000"+
54454 		"\u0000\u0ad4\u0af4\u0001\u0000\u0000\u0000\u0ad5\u0ad6\u0005\u019e\u0000"+
54455 		"\u0000\u0ad6\u0ad7\u0005\u0018\u0000\u0000\u0ad7\u0af4\u0003\u00cae\u0000"+
54456 		"\u0ad8\u0ad9\u0005\u019f\u0000\u0000\u0ad9\u0ada\u0005\u0018\u0000\u0000"+
54457 		"\u0ada\u0af4\u0003\u00cae\u0000\u0adb\u0adc\u0005\u019d\u0000\u0000\u0adc"+
54458 		"\u0add\u0005\u0018\u0000\u0000\u0add\u0af4\u0003\u00cae\u0000\u0ade\u0adf"+
54459 		"\u0005\u018a\u0000\u0000\u0adf\u0ae0\u0005\u0018\u0000\u0000\u0ae0\u0ae2"+
54460 		"\u0005a\u0000\u0000\u0ae1\u0ae3\u0003\u01e6\u00f3\u0000\u0ae2\u0ae1\u0001"+
54461 		"\u0000\u0000\u0000\u0ae2\u0ae3\u0001\u0000\u0000\u0000\u0ae3\u0af4\u0001"+
54462 		"\u0000\u0000\u0000\u0ae4\u0ae5\u0005\u0199\u0000\u0000\u0ae5\u0aec\u0005"+
54463 		"\u0018\u0000\u0000\u0ae6\u0ae8\u0005a\u0000\u0000\u0ae7\u0ae9\u0003\u0192"+
54464 		"\u00c9\u0000\u0ae8\u0ae7\u0001\u0000\u0000\u0000\u0ae8\u0ae9\u0001\u0000"+
54465 		"\u0000\u0000\u0ae9\u0aed\u0001\u0000\u0000\u0000\u0aea\u0aeb\u0005b\u0000"+
54466 		"\u0000\u0aeb\u0aed\u0003\u0196\u00cb\u0000\u0aec\u0ae6\u0001\u0000\u0000"+
54467 		"\u0000\u0aec\u0aea\u0001\u0000\u0000\u0000\u0aed\u0af4\u0001\u0000\u0000"+
54468 		"\u0000\u0aee\u0af4\u0003\u0198\u00cc\u0000\u0aef\u0af4\u0003\u019a\u00cd"+
54469 		"\u0000\u0af0\u0af4\u0003\u019c\u00ce\u0000\u0af1\u0af4\u0003\u0190\u00c8"+
54470 		"\u0000\u0af2\u0af4\u0003\u019e\u00cf\u0000\u0af3\u0ac1\u0001\u0000\u0000"+
54471 		"\u0000\u0af3\u0acc\u0001\u0000\u0000\u0000\u0af3\u0acf\u0001\u0000\u0000"+
54472 		"\u0000\u0af3\u0ad5\u0001\u0000\u0000\u0000\u0af3\u0ad8\u0001\u0000\u0000"+
54473 		"\u0000\u0af3\u0adb\u0001\u0000\u0000\u0000\u0af3\u0ade\u0001\u0000\u0000"+
54474 		"\u0000\u0af3\u0ae4\u0001\u0000\u0000\u0000\u0af3\u0aee\u0001\u0000\u0000"+
54475 		"\u0000\u0af3\u0aef\u0001\u0000\u0000\u0000\u0af3\u0af0\u0001\u0000\u0000"+
54476 		"\u0000\u0af3\u0af1\u0001\u0000\u0000\u0000\u0af3\u0af2\u0001\u0000\u0000"+
54477 		"\u0000\u0af4\u018f\u0001\u0000\u0000\u0000\u0af5\u0af6\u0005\u01db\u0000"+
54478 		"\u0000\u0af6\u0af7\u0005\u0018\u0000\u0000\u0af7\u0af8\u0005a\u0000\u0000"+
54479 		"\u0af8\u0af9\u0005\u001f\u0000\u0000\u0af9\u0afa\u0005\u01dc\u0000\u0000"+
54480 		"\u0afa\u0afb\u0005\u0018\u0000\u0000\u0afb\u0afc\u0003H$\u0000\u0afc\u0afd"+
54481 		"\u0005%\u0000\u0000\u0afd\u0afe\u0005\u01dd\u0000\u0000\u0afe\u0aff\u0005"+
54482 		"\u0018\u0000\u0000\u0aff\u0b00\u0003\u01d8\u00ec\u0000\u0b00\u0191\u0001"+
54483 		"\u0000\u0000\u0000\u0b01\u0b02\u0005\u001f\u0000\u0000\u0b02\u0b07\u0003"+
54484 		"\u0194\u00ca\u0000\u0b03\u0b04\u0005%\u0000\u0000\u0b04\u0b06\u0003\u0194"+
54485 		"\u00ca\u0000\u0b05\u0b03\u0001\u0000\u0000\u0000\u0b06\u0b09\u0001\u0000"+
54486 		"\u0000\u0000\u0b07\u0b05\u0001\u0000\u0000\u0000\u0b07\u0b08\u0001\u0000"+
54487 		"\u0000\u0000\u0b08\u0b0a\u0001\u0000\u0000\u0000\u0b09\u0b07\u0001\u0000"+
54488 		"\u0000\u0000\u0b0a\u0b0b\u0005 \u0000\u0000\u0b0b\u0193\u0001\u0000\u0000"+
54489 		"\u0000\u0b0c\u0b0d\u0005\u01a0\u0000\u0000\u0b0d\u0b10\u0005\u0018\u0000"+
54490 		"\u0000\u0b0e\u0b11\u0005l\u0000\u0000\u0b0f\u0b11\u0003t:\u0000\u0b10"+
54491 		"\u0b0e\u0001\u0000\u0000\u0000\u0b10\u0b0f\u0001\u0000\u0000\u0000\u0b11"+
54492 		"\u0b12\u0001\u0000\u0000\u0000\u0b12\u0b14\u0005%\u0000\u0000\u0b13\u0b0c"+
54493 		"\u0001\u0000\u0000\u0000\u0b13\u0b14\u0001\u0000\u0000\u0000\u0b14\u0b15"+
54494 		"\u0001\u0000\u0000\u0000\u0b15\u0b16\u0005\u0197\u0000\u0000\u0b16\u0b17"+
54495 		"\u0005\u0018\u0000\u0000\u0b17\u0b18\u0007$\u0000\u0000\u0b18\u0195\u0001"+
54496 		"\u0000\u0000\u0000\u0b19\u0b1a\u0005\u001f\u0000\u0000\u0b1a\u0b1b\u0005"+
54497 		"\u0197\u0000\u0000\u0b1b\u0b1c\u0005\u0018\u0000\u0000\u0b1c\u0b1d\u0005"+
54498 		"\u011b\u0000\u0000\u0b1d\u0b1e\u0005 \u0000\u0000\u0b1e\u0197\u0001\u0000"+
54499 		"\u0000\u0000\u0b1f\u0b20\u0005\u0196\u0000\u0000\u0b20\u0b21\u0005\u0018"+
54500 		"\u0000\u0000\u0b21\u0b2c\u0005a\u0000\u0000\u0b22\u0b23\u0005\u0103\u0000"+
54501 		"\u0000\u0b23\u0b24\u0005\u0018\u0000\u0000\u0b24\u0b2c\u0007%\u0000\u0000"+
54502 		"\u0b25\u0b26\u0005\u018a\u0000\u0000\u0b26\u0b27\u0005\u0018\u0000\u0000"+
54503 		"\u0b27\u0b29\u0005a\u0000\u0000\u0b28\u0b2a\u0003\u01e6\u00f3\u0000\u0b29"+
54504 		"\u0b28\u0001\u0000\u0000\u0000\u0b29\u0b2a\u0001\u0000\u0000\u0000\u0b2a"+
54505 		"\u0b2c\u0001\u0000\u0000\u0000\u0b2b\u0b1f\u0001\u0000\u0000\u0000\u0b2b"+
54506 		"\u0b22\u0001\u0000\u0000\u0000\u0b2b\u0b25\u0001\u0000\u0000\u0000\u0b2c"+
54507 		"\u0199\u0001\u0000\u0000\u0000\u0b2d\u0b2e\u0005\u0101\u0000\u0000\u0b2e"+
54508 		"\u0b36\u0005\u0018\u0000\u0000\u0b2f\u0b30\u0005\u010a\u0000\u0000\u0b30"+
54509 		"\u0b31\u0005\u001f\u0000\u0000\u0b31\u0b32\u0003H$\u0000\u0b32\u0b33\u0005"+
54510 		" \u0000\u0000\u0b33\u0b37\u0001\u0000\u0000\u0000\u0b34\u0b37\u0005\u018f"+
54511 		"\u0000\u0000\u0b35\u0b37\u0005\u0122\u0000\u0000\u0b36\u0b2f\u0001\u0000"+
54512 		"\u0000\u0000\u0b36\u0b34\u0001\u0000\u0000\u0000\u0b36\u0b35\u0001\u0000"+
54513 		"\u0000\u0000\u0b37\u019b\u0001\u0000\u0000\u0000\u0b38\u0b39\u0005\u00f4"+
54514 		"\u0000\u0000\u0b39\u0b3a\u0005\u00f7\u0000\u0000\u0b3a\u0b55\u0005>\u0000"+
54515 		"\u0000\u0b3b\u0b3c\u0005\u00f4\u0000\u0000\u0b3c\u0b3d\u0005\u00f7\u0000"+
54516 		"\u0000\u0b3d\u0b3e\u0005>\u0000\u0000\u0b3e\u0b3f\u0005u\u0000\u0000\u0b3f"+
54517 		"\u0b55\u0003P(\u0000\u0b40\u0b55\u0005\u010b\u0000\u0000\u0b41\u0b42\u0005"+
54518 		"\u00f4\u0000\u0000\u0b42\u0b43\u0005>\u0000\u0000\u0b43\u0b44\u0005\u001f"+
54519 		"\u0000\u0000\u0b44\u0b46\u0003H$\u0000\u0b45\u0b47\u0007\u0012\u0000\u0000"+
54520 		"\u0b46\u0b45\u0001\u0000\u0000\u0000\u0b46\u0b47\u0001\u0000\u0000\u0000"+
54521 		"\u0b47\u0b4f\u0001\u0000\u0000\u0000\u0b48\u0b49\u0005%\u0000\u0000\u0b49"+
54522 		"\u0b4b\u0003H$\u0000\u0b4a\u0b4c\u0007\u0012\u0000\u0000\u0b4b\u0b4a\u0001"+
54523 		"\u0000\u0000\u0000\u0b4b\u0b4c\u0001\u0000\u0000\u0000\u0b4c\u0b4e\u0001"+
54524 		"\u0000\u0000\u0000\u0b4d\u0b48\u0001\u0000\u0000\u0000\u0b4e\u0b51\u0001"+
54525 		"\u0000\u0000\u0000\u0b4f\u0b4d\u0001\u0000\u0000\u0000\u0b4f\u0b50\u0001"+
54526 		"\u0000\u0000\u0000\u0b50\u0b52\u0001\u0000\u0000\u0000\u0b51\u0b4f\u0001"+
54527 		"\u0000\u0000\u0000\u0b52\u0b53\u0005 \u0000\u0000\u0b53\u0b55\u0001\u0000"+
54528 		"\u0000\u0000\u0b54\u0b38\u0001\u0000\u0000\u0000\u0b54\u0b3b\u0001\u0000"+
54529 		"\u0000\u0000\u0b54\u0b40\u0001\u0000\u0000\u0000\u0b54\u0b41\u0001\u0000"+
54530 		"\u0000\u0000\u0b55\u019d\u0001\u0000\u0000\u0000\u0b56\u0b57\u0005\u00dd"+
54531 		"\u0000\u0000\u0b57\u0b58\u0005\u001f\u0000\u0000\u0b58\u0b59\u0003H$\u0000"+
54532 		"\u0b59\u0b5b\u0005\u0120\u0000\u0000\u0b5a\u0b5c\u0007&\u0000\u0000\u0b5b"+
54533 		"\u0b5a\u0001\u0000\u0000\u0000\u0b5b\u0b5c\u0001\u0000\u0000\u0000\u0b5c"+
54534 		"\u0b5d\u0001\u0000\u0000\u0000\u0b5d\u0b5e\u0005f\u0000\u0000\u0b5e\u0b5f"+
54535 		"\u0005L\u0000\u0000\u0b5f\u0b60\u0005\u001f\u0000\u0000\u0b60\u0b65\u0003"+
54536 		"r9\u0000\u0b61\u0b62\u0005%\u0000\u0000\u0b62\u0b64\u0003r9\u0000\u0b63"+
54537 		"\u0b61\u0001\u0000\u0000\u0000\u0b64\u0b67\u0001\u0000\u0000\u0000\u0b65"+
54538 		"\u0b63\u0001\u0000\u0000\u0000\u0b65\u0b66\u0001\u0000\u0000\u0000\u0b66"+
54539 		"\u0b68\u0001\u0000\u0000\u0000\u0b67\u0b65\u0001\u0000\u0000\u0000\u0b68"+
54540 		"\u0b69\u0005 \u0000\u0000\u0b69\u0b6a\u0005 \u0000\u0000\u0b6a\u019f\u0001"+
54541 		"\u0000\u0000\u0000\u0b6b\u0b6d\u0005A\u0000\u0000\u0b6c\u0b6b\u0001\u0000"+
54542 		"\u0000\u0000\u0b6c\u0b6d\u0001\u0000\u0000\u0000\u0b6d\u0b6f\u0001\u0000"+
54543 		"\u0000\u0000\u0b6e\u0b70\u0003\u014a\u00a5\u0000\u0b6f\u0b6e\u0001\u0000"+
54544 		"\u0000\u0000\u0b6f\u0b70\u0001\u0000\u0000\u0000\u0b70\u01a1\u0001\u0000"+
54545 		"\u0000\u0000\u0b71\u0b7b\u0003\u01a4\u00d2\u0000\u0b72\u0b7b\u0003\u01a6"+
54546 		"\u00d3\u0000\u0b73\u0b7b\u0003\u01b6\u00db\u0000\u0b74\u0b7b\u0003\u01c6"+
54547 		"\u00e3\u0000\u0b75\u0b7b\u0003\u01c8\u00e4\u0000\u0b76\u0b7b\u0003\u01ca"+
54548 		"\u00e5\u0000\u0b77\u0b7b\u0003\u01cc\u00e6\u0000\u0b78\u0b7b\u0003\u01e4"+
54549 		"\u00f2\u0000\u0b79\u0b7b\u0005\u0121\u0000\u0000\u0b7a\u0b71\u0001\u0000"+
54550 		"\u0000\u0000\u0b7a\u0b72\u0001\u0000\u0000\u0000\u0b7a\u0b73\u0001\u0000"+
54551 		"\u0000\u0000\u0b7a\u0b74\u0001\u0000\u0000\u0000\u0b7a\u0b75\u0001\u0000"+
54552 		"\u0000\u0000\u0b7a\u0b76\u0001\u0000\u0000\u0000\u0b7a\u0b77\u0001\u0000"+
54553 		"\u0000\u0000\u0b7a\u0b78\u0001\u0000\u0000\u0000\u0b7a\u0b79\u0001\u0000"+
54554 		"\u0000\u0000\u0b7b\u01a3\u0001\u0000\u0000\u0000\u0b7c\u0b7d\u0005M\u0000"+
54555 		"\u0000\u0b7d\u0b7f\u0007\'\u0000\u0000\u0b7e\u0b7c\u0001\u0000\u0000\u0000"+
54556 		"\u0b7e\u0b7f\u0001\u0000\u0000\u0000\u0b7f\u0b80\u0001\u0000\u0000\u0000"+
54557 		"\u0b80\u0b83\u00059\u0000\u0000\u0b81\u0b84\u0003\u01aa\u00d5\u0000\u0b82"+
54558 		"\u0b84\u0003\u01b0\u00d8\u0000\u0b83\u0b81\u0001\u0000\u0000\u0000\u0b83"+
54559 		"\u0b82\u0001\u0000\u0000\u0000\u0b84\u01a5\u0001\u0000\u0000\u0000\u0b85"+
54560 		"\u0b86\u0003\u01a8\u00d4\u0000\u0b86\u0b89\u0003\u0094J\u0000\u0b87\u0b88"+
54561 		"\u0005\u00f6\u0000\u0000\u0b88\u0b8a\u0003Z-\u0000\u0b89\u0b87\u0001\u0000"+
54562 		"\u0000\u0000\u0b89\u0b8a\u0001\u0000\u0000\u0000\u0b8a\u0b8e\u0001\u0000"+
54563 		"\u0000\u0000\u0b8b\u0b8f\u0005l\u0000\u0000\u0b8c\u0b8d\u0005k\u0000\u0000"+
54564 		"\u0b8d\u0b8f\u0005l\u0000\u0000\u0b8e\u0b8b\u0001\u0000\u0000\u0000\u0b8e"+
54565 		"\u0b8c\u0001\u0000\u0000\u0000\u0b8e\u0b8f\u0001\u0000\u0000\u0000\u0b8f"+
54566 		"\u0b91\u0001\u0000\u0000\u0000\u0b90\u0b92\u0005\u0128\u0000\u0000\u0b91"+
54567 		"\u0b90\u0001\u0000\u0000\u0000\u0b91\u0b92\u0001\u0000\u0000\u0000\u0b92"+
54568 		"\u01a7\u0001\u0000\u0000\u0000\u0b93\u0b94\u00053\u0000\u0000\u0b94\u0b95"+
54569 		"\u0005<\u0000\u0000\u0b95\u0b96\u0003H$\u0000\u0b96\u01a9\u0001\u0000"+
54570 		"\u0000\u0000\u0b97\u0b9c\u0003\u01ac\u00d6\u0000\u0b98\u0b99\u0005%\u0000"+
54571 		"\u0000\u0b99\u0b9b\u0003\u01ac\u00d6\u0000\u0b9a\u0b98\u0001\u0000\u0000"+
54572 		"\u0000\u0b9b\u0b9e\u0001\u0000\u0000\u0000\u0b9c\u0b9a\u0001\u0000\u0000"+
54573 		"\u0000\u0b9c\u0b9d\u0001\u0000\u0000\u0000\u0b9d\u01ab\u0001\u0000\u0000"+
54574 		"\u0000\u0b9e\u0b9c\u0001\u0000\u0000\u0000\u0b9f\u0ba6\u0003\u0138\u009c"+
54575 		"\u0000\u0ba0\u0ba6\u0003\u016e\u00b7\u0000\u0ba1\u0ba6\u0003\u0170\u00b8"+
54576 		"\u0000\u0ba2\u0ba6\u0003\u0172\u00b9\u0000\u0ba3\u0ba6\u0003\u01da\u00ed"+
54577 		"\u0000\u0ba4\u0ba6\u0003\u01ae\u00d7\u0000\u0ba5\u0b9f\u0001\u0000\u0000"+
54578 		"\u0000\u0ba5\u0ba0\u0001\u0000\u0000\u0000\u0ba5\u0ba1\u0001\u0000\u0000"+
54579 		"\u0000\u0ba5\u0ba2\u0001\u0000\u0000\u0000\u0ba5\u0ba3\u0001\u0000\u0000"+
54580 		"\u0000\u0ba5\u0ba4\u0001\u0000\u0000\u0000\u0ba6\u01ad\u0001\u0000\u0000"+
54581 		"\u0000\u0ba7\u0ba8\u0005?\u0000\u0000\u0ba8\u0baa\u0003X,\u0000\u0ba9"+
54582 		"\u0ba7\u0001\u0000\u0000\u0000\u0ba9\u0baa\u0001\u0000\u0000\u0000\u0baa"+
54583 		"\u0bab\u0001\u0000\u0000\u0000\u0bab\u0bac\u0005\u009a\u0000\u0000\u0bac"+
54584 		"\u0bad\u0003r9\u0000\u0bad\u0bae\u0005f\u0000\u0000\u0bae\u0baf\u0003"+
54585 		"H$\u0000\u0baf\u01af\u0001\u0000\u0000\u0000\u0bb0\u0bb1\u0003\u01b2\u00d9"+
54586 		"\u0000\u0bb1\u0bb2\u0005%\u0000\u0000\u0bb2\u0bb3\u0003\u0186\u00c3\u0000"+
54587 		"\u0bb3\u0bb9\u0001\u0000\u0000\u0000\u0bb4\u0bb5\u0003\u0186\u00c3\u0000"+
54588 		"\u0bb5\u0bb6\u0005%\u0000\u0000\u0bb6\u0bb7\u0003\u01b2\u00d9\u0000\u0bb7"+
54589 		"\u0bb9\u0001\u0000\u0000\u0000\u0bb8\u0bb0\u0001\u0000\u0000\u0000\u0bb8"+
54590 		"\u0bb4\u0001\u0000\u0000\u0000\u0bb9\u01b1\u0001\u0000\u0000\u0000\u0bba"+
54591 		"\u0bbb\u0003\u01b4\u00da\u0000\u0bbb\u0bbc\u0005\u009a\u0000\u0000\u0bbc"+
54592 		"\u0bbf\u0003r9\u0000\u0bbd\u0bbe\u0005M\u0000\u0000\u0bbe\u0bc0\u0005"+
54593 		"L\u0000\u0000\u0bbf\u0bbd\u0001\u0000\u0000\u0000\u0bbf\u0bc0\u0001\u0000"+
54594 		"\u0000\u0000\u0bc0\u0bc1\u0001\u0000\u0000\u0000\u0bc1\u0bc2\u0005%\u0000"+
54595 		"\u0000\u0bc2\u0bc3\u0003\u01b4\u00da\u0000\u0bc3\u01b3\u0001\u0000\u0000"+
54596 		"\u0000\u0bc4\u0bc5\u0003H$\u0000\u0bc5\u0bc6\u0003\u0096K\u0000\u0bc6"+
54597 		"\u0bc7\u0005\u00e7\u0000\u0000\u0bc7\u0bc8\u0005\u00e4\u0000\u0000\u0bc8"+
54598 		"\u0bc9\u0005`\u0000\u0000\u0bc9\u0bcb\u0005\u00e0\u0000\u0000\u0bca\u0bcc"+
54599 		"\u0007\u001e\u0000\u0000\u0bcb\u0bca\u0001\u0000\u0000\u0000\u0bcb\u0bcc"+
54600 		"\u0001\u0000\u0000\u0000\u0bcc\u0bce\u0001\u0000\u0000\u0000\u0bcd\u0bcf"+
54601 		"\u0005\u00db\u0000\u0000\u0bce\u0bcd\u0001\u0000\u0000\u0000\u0bce\u0bcf"+
54602 		"\u0001\u0000\u0000\u0000\u0bcf\u0bd2\u0001\u0000\u0000\u0000\u0bd0\u0bd1"+
54603 		"\u0005k\u0000\u0000\u0bd1\u0bd3\u0005l\u0000\u0000\u0bd2\u0bd0\u0001\u0000"+
54604 		"\u0000\u0000\u0bd2\u0bd3\u0001\u0000\u0000\u0000\u0bd3\u0bd6\u0001\u0000"+
54605 		"\u0000\u0000\u0bd4\u0bd5\u0005?\u0000\u0000\u0bd5\u0bd7\u0003\u00cae\u0000"+
54606 		"\u0bd6\u0bd4\u0001\u0000\u0000\u0000\u0bd6\u0bd7\u0001\u0000\u0000\u0000"+
54607 		"\u0bd7\u01b5\u0001\u0000\u0000\u0000\u0bd8\u0bdf\u00054\u0000\u0000\u0bd9"+
54608 		"\u0be0\u0003\u01b8\u00dc\u0000\u0bda\u0be0\u0003\u01c2\u00e1\u0000\u0bdb"+
54609 		"\u0be0\u0003\u01c4\u00e2\u0000\u0bdc\u0bdd\u0005\u011c\u0000\u0000\u0bdd"+
54610 		"\u0bde\u0005f\u0000\u0000\u0bde\u0be0\u0005\u0189\u0000\u0000\u0bdf\u0bd9"+
54611 		"\u0001\u0000\u0000\u0000\u0bdf\u0bda\u0001\u0000\u0000\u0000\u0bdf\u0bdb"+
54612 		"\u0001\u0000\u0000\u0000\u0bdf\u0bdc\u0001\u0000\u0000\u0000\u0be0\u01b7"+
54613 		"\u0001\u0000\u0000\u0000\u0be1\u0be3\u0005?\u0000\u0000\u0be2\u0be1\u0001"+
54614 		"\u0000\u0000\u0000\u0be2\u0be3\u0001\u0000\u0000\u0000\u0be3\u0be5\u0001"+
54615 		"\u0000\u0000\u0000\u0be4\u0be6\u0003\u00deo\u0000\u0be5\u0be4\u0001\u0000"+
54616 		"\u0000\u0000\u0be5\u0be6\u0001\u0000\u0000\u0000\u0be6\u0be7\u0001\u0000"+
54617 		"\u0000\u0000\u0be7\u0bec\u0003\u01ba\u00dd\u0000\u0be8\u0be9\u0005%\u0000"+
54618 		"\u0000\u0be9\u0beb\u0003\u01ba\u00dd\u0000\u0bea\u0be8\u0001\u0000\u0000"+
54619 		"\u0000\u0beb\u0bee\u0001\u0000\u0000\u0000\u0bec\u0bea\u0001\u0000\u0000"+
54620 		"\u0000\u0bec\u0bed\u0001\u0000\u0000\u0000\u0bed\u01b9\u0001\u0000\u0000"+
54621 		"\u0000\u0bee\u0bec\u0001\u0000\u0000\u0000\u0bef\u0bf1\u0003X,\u0000\u0bf0"+
54622 		"\u0bf2\u0003\u01bc\u00de\u0000\u0bf1\u0bf0\u0001\u0000\u0000\u0000\u0bf1"+
54623 		"\u0bf2\u0001\u0000\u0000\u0000\u0bf2\u01bb\u0001\u0000\u0000\u0000\u0bf3"+
54624 		"\u0bf4\u0005M\u0000\u0000\u0bf4\u0bf5\u0005\u001f\u0000\u0000\u0bf5\u0bfa"+
54625 		"\u0003\u01be\u00df\u0000\u0bf6\u0bf7\u0005%\u0000\u0000\u0bf7\u0bf9\u0003"+
54626 		"\u01be\u00df\u0000\u0bf8\u0bf6\u0001\u0000\u0000\u0000\u0bf9\u0bfc\u0001"+
54627 		"\u0000\u0000\u0000\u0bfa\u0bf8\u0001\u0000\u0000\u0000\u0bfa\u0bfb\u0001"+
54628 		"\u0000\u0000\u0000\u0bfb\u0bfd\u0001\u0000\u0000\u0000\u0bfc\u0bfa\u0001"+
54629 		"\u0000\u0000\u0000\u0bfd\u0bfe\u0005 \u0000\u0000\u0bfe\u01bd\u0001\u0000"+
54630 		"\u0000\u0000\u0bff\u0c00\u0005\u0113\u0000\u0000\u0c00\u0c01\u0005\u0018"+
54631 		"\u0000\u0000\u0c01\u0c11\u0005\u02b8\u0000\u0000\u0c02\u0c03\u0005\u0118"+
54632 		"\u0000\u0000\u0c03\u0c04\u0005\u0018\u0000\u0000\u0c04\u0c11\u0003\u01c0"+
54633 		"\u00e0\u0000\u0c05\u0c06\u0005\u0114\u0000\u0000\u0c06\u0c0e\u0005g\u0000"+
54634 		"\u0000\u0c07\u0c08\u00034\u001a\u0000\u0c08\u0c09\u0005\u001f\u0000\u0000"+
54635 		"\u0c09\u0c0a\u0003H$\u0000\u0c0a\u0c0b\u0005 \u0000\u0000\u0c0b\u0c0f"+
54636 		"\u0001\u0000\u0000\u0000\u0c0c\u0c0f\u0003\u00cae\u0000\u0c0d\u0c0f\u0005"+
54637 		"\u02b7\u0000\u0000\u0c0e\u0c07\u0001\u0000\u0000\u0000\u0c0e\u0c0c\u0001"+
54638 		"\u0000\u0000\u0000\u0c0e\u0c0d\u0001\u0000\u0000\u0000\u0c0f\u0c11\u0001"+
54639 		"\u0000\u0000\u0000\u0c10\u0bff\u0001\u0000\u0000\u0000\u0c10\u0c02\u0001"+
54640 		"\u0000\u0000\u0000\u0c10\u0c05\u0001\u0000\u0000\u0000\u0c11\u01bf\u0001"+
54641 		"\u0000\u0000\u0000\u0c12\u0c13\u0007\u0000\u0000\u0000\u0c13\u01c1\u0001"+
54642 		"\u0000\u0000\u0000\u0c14\u0c16\u0005<\u0000\u0000\u0c15\u0c17\u0003\u00de"+
54643 		"o\u0000\u0c16\u0c15\u0001\u0000\u0000\u0000\u0c16\u0c17\u0001\u0000\u0000"+
54644 		"\u0000\u0c17\u0c18\u0001\u0000\u0000\u0000\u0c18\u0c1d\u0003H$\u0000\u0c19"+
54645 		"\u0c1a\u0005%\u0000\u0000\u0c1a\u0c1c\u0003H$\u0000\u0c1b\u0c19\u0001"+
54646 		"\u0000\u0000\u0000\u0c1c\u0c1f\u0001\u0000\u0000\u0000\u0c1d\u0c1b\u0001"+
54647 		"\u0000\u0000\u0000\u0c1d\u0c1e\u0001\u0000\u0000\u0000\u0c1e\u01c3\u0001"+
54648 		"\u0000\u0000\u0000\u0c1f\u0c1d\u0001\u0000\u0000\u0000\u0c20\u0c22\u0005"+
54649 		">\u0000\u0000\u0c21\u0c23\u0003\u00deo\u0000\u0c22\u0c21\u0001\u0000\u0000"+
54650 		"\u0000\u0c22\u0c23\u0001\u0000\u0000\u0000\u0c23\u0c24\u0001\u0000\u0000"+
54651 		"\u0000\u0c24\u0c29\u0003V+\u0000\u0c25\u0c26\u0005%\u0000\u0000\u0c26"+
54652 		"\u0c28\u0003V+\u0000\u0c27\u0c25\u0001\u0000\u0000\u0000\u0c28\u0c2b\u0001"+
54653 		"\u0000\u0000\u0000\u0c29\u0c27\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0001"+
54654 		"\u0000\u0000\u0000\u0c2a\u01c5\u0001\u0000\u0000\u0000\u0c2b\u0c29\u0001"+
54655 		"\u0000\u0000\u0000\u0c2c\u0c2e\u0005M\u0000\u0000\u0c2d\u0c2c\u0001\u0000"+
54656 		"\u0000\u0000\u0c2d\u0c2e\u0001\u0000\u0000\u0000\u0c2e\u0c2f\u0001\u0000"+
54657 		"\u0000\u0000\u0c2f\u0c30\u0007\'\u0000\u0000\u0c30\u0c33\u0005?\u0000"+
54658 		"\u0000\u0c31\u0c34\u0005r\u0000\u0000\u0c32\u0c34\u0003X,\u0000\u0c33"+
54659 		"\u0c31\u0001\u0000\u0000\u0000\u0c33\u0c32\u0001\u0000\u0000\u0000\u0c34"+
54660 		"\u01c7\u0001\u0000\u0000\u0000\u0c35\u0c36\u0007(\u0000\u0000\u0c36\u0c39"+
54661 		"\u0005G\u0000\u0000\u0c37\u0c3a\u0005r\u0000\u0000\u0c38\u0c3a\u0003\u00cc"+
54662 		"f\u0000\u0c39\u0c37\u0001\u0000\u0000\u0000\u0c39\u0c38\u0001\u0000\u0000"+
54663 		"\u0000\u0c3a\u01c9\u0001\u0000\u0000\u0000\u0c3b\u0c3e\u0005\u0129\u0000"+
54664 		"\u0000\u0c3c\u0c3d\u0005\u00dd\u0000\u0000\u0c3d\u0c3f\u0003b1\u0000\u0c3e"+
54665 		"\u0c3c\u0001\u0000\u0000\u0000\u0c3e\u0c3f\u0001\u0000\u0000\u0000\u0c3f"+
54666 		"\u0c40\u0001\u0000\u0000\u0000\u0c40\u0c41\u0005g\u0000\u0000\u0c41\u0c44"+
54667 		"\u0003@ \u0000\u0c42\u0c43\u0005\u00dd\u0000\u0000\u0c43\u0c45\u0003b"+
54668 		"1\u0000\u0c44\u0c42\u0001\u0000\u0000\u0000\u0c44\u0c45\u0001\u0000\u0000"+
54669 		"\u0000\u0c45\u0c4b\u0001\u0000\u0000\u0000\u0c46\u0c47\u0005M\u0000\u0000"+
54670 		"\u0c47\u0c48\u0005\u001f\u0000\u0000\u0c48\u0c49\u0003\u00c6c\u0000\u0c49"+
54671 		"\u0c4a\u0005 \u0000\u0000\u0c4a\u0c4c\u0001\u0000\u0000\u0000\u0c4b\u0c46"+
54672 		"\u0001\u0000\u0000\u0000\u0c4b\u0c4c\u0001\u0000\u0000\u0000\u0c4c\u01cb"+
54673 		"\u0001\u0000\u0000\u0000\u0c4d\u0c4e\u0005:\u0000\u0000\u0c4e\u0c51\u0005"+
54674 		"\u001f\u0000\u0000\u0c4f\u0c52\u0003\u01ce\u00e7\u0000\u0c50\u0c52\u0003"+
54675 		"\u01d0\u00e8\u0000\u0c51\u0c4f\u0001\u0000\u0000\u0000\u0c51\u0c50\u0001"+
54676 		"\u0000\u0000\u0000\u0c52\u0c53\u0001\u0000\u0000\u0000\u0c53\u0c54\u0005"+
54677 		" \u0000\u0000\u0c54\u01cd\u0001\u0000\u0000\u0000\u0c55\u0c56\u0005\u019a"+
54678 		"\u0000\u0000\u0c56\u0c5a\u0005\u0018\u0000\u0000\u0c57\u0c5b\u00034\u001a"+
54679 		"\u0000\u0c58\u0c5b\u0003\u00cae\u0000\u0c59\u0c5b\u0005\u02b7\u0000\u0000"+
54680 		"\u0c5a\u0c57\u0001\u0000\u0000\u0000\u0c5a\u0c58\u0001\u0000\u0000\u0000"+
54681 		"\u0c5a\u0c59\u0001\u0000\u0000\u0000\u0c5b\u01cf\u0001\u0000\u0000\u0000"+
54682 		"\u0c5c\u0c5d\u0005\u018a\u0000\u0000\u0c5d\u0c63\u0005\u0018\u0000\u0000"+
54683 		"\u0c5e\u0c64\u0005b\u0000\u0000\u0c5f\u0c61\u0005a\u0000\u0000\u0c60\u0c62"+
54684 		"\u0003\u01d2\u00e9\u0000\u0c61\u0c60\u0001\u0000\u0000\u0000\u0c61\u0c62"+
54685 		"\u0001\u0000\u0000\u0000\u0c62\u0c64\u0001\u0000\u0000\u0000\u0c63\u0c5e"+
54686 		"\u0001\u0000\u0000\u0000\u0c63\u0c5f\u0001\u0000\u0000\u0000\u0c64\u01d1"+
54687 		"\u0001\u0000\u0000\u0000\u0c65\u0c69\u0005\u001f\u0000\u0000\u0c66\u0c67"+
54688 		"\u0005\u01a2\u0000\u0000\u0c67\u0c68\u0005\u0018\u0000\u0000\u0c68\u0c6a"+
54689 		"\u0003@ \u0000\u0c69\u0c66\u0001\u0000\u0000\u0000\u0c69\u0c6a\u0001\u0000"+
54690 		"\u0000\u0000\u0c6a\u0c6c\u0001\u0000\u0000\u0000\u0c6b\u0c6d\u0003\u01d4"+
54691 		"\u00ea\u0000\u0c6c\u0c6b\u0001\u0000\u0000\u0000\u0c6c\u0c6d\u0001\u0000"+
54692 		"\u0000\u0000\u0c6d\u0c6f\u0001\u0000\u0000\u0000\u0c6e\u0c70\u0003\u01d6"+
54693 		"\u00eb\u0000\u0c6f\u0c6e\u0001\u0000\u0000\u0000\u0c6f\u0c70\u0001\u0000"+
54694 		"\u0000\u0000\u0c70\u0c71\u0001\u0000\u0000\u0000\u0c71\u0c72\u0005 \u0000"+
54695 		"\u0000\u0c72\u01d3\u0001\u0000\u0000\u0000\u0c73\u0c75\u0005%\u0000\u0000"+
54696 		"\u0c74\u0c73\u0001\u0000\u0000\u0000\u0c74\u0c75\u0001\u0000\u0000\u0000"+
54697 		"\u0c75\u0c76\u0001\u0000\u0000\u0000\u0c76\u0c77\u0005\u0187\u0000\u0000"+
54698 		"\u0c77\u0c78\u0005\u0018\u0000\u0000\u0c78\u0c79\u0003\u01c0\u00e0\u0000"+
54699 		"\u0c79\u01d5\u0001\u0000\u0000\u0000\u0c7a\u0c7c\u0005%\u0000\u0000\u0c7b"+
54700 		"\u0c7a\u0001\u0000\u0000\u0000\u0c7b\u0c7c\u0001\u0000\u0000\u0000\u0c7c"+
54701 		"\u0c7d\u0001\u0000\u0000\u0000\u0c7d\u0c7e\u0005\u01a1\u0000\u0000\u0c7e"+
54702 		"\u0c7f\u0005\u0018\u0000\u0000\u0c7f\u0c80\u0003\u01d8\u00ec\u0000\u0c80"+
54703 		"\u01d7\u0001\u0000\u0000\u0000\u0c81\u0c85\u0005\u0110\u0000\u0000\u0c82"+
54704 		"\u0c83\u0005\u02b8\u0000\u0000\u0c83\u0c85\u0007)\u0000\u0000\u0c84\u0c81"+
54705 		"\u0001\u0000\u0000\u0000\u0c84\u0c82\u0001\u0000\u0000\u0000\u0c85\u01d9"+
54706 		"\u0001\u0000\u0000\u0000\u0c86\u0c89\u0003\u01dc\u00ee\u0000\u0c87\u0c8a"+
54707 		"\u0003\u01de\u00ef\u0000\u0c88\u0c8a\u0003\u01e2\u00f1\u0000\u0c89\u0c87"+
54708 		"\u0001\u0000\u0000\u0000\u0c89\u0c88\u0001\u0000\u0000\u0000\u0c8a\u01db"+
54709 		"\u0001\u0000\u0000\u0000\u0c8b\u0c8c\u0005>\u0000\u0000\u0c8c\u0c8d\u0003"+
54710 		"V+\u0000\u0c8d\u01dd\u0001\u0000\u0000\u0000\u0c8e\u0c94\u0005\u00f5\u0000"+
54711 		"\u0000\u0c8f\u0c95\u0003\u017c\u00be\u0000\u0c90\u0c92\u0003R)\u0000\u0c91"+
54712 		"\u0c93\u0003\u01e0\u00f0\u0000\u0c92\u0c91\u0001\u0000\u0000\u0000\u0c92"+
54713 		"\u0c93\u0001\u0000\u0000\u0000\u0c93\u0c95\u0001\u0000\u0000\u0000\u0c94"+
54714 		"\u0c8f\u0001\u0000\u0000\u0000\u0c94\u0c90\u0001\u0000\u0000\u0000\u0c95"+
54715 		"\u01df\u0001\u0000\u0000\u0000\u0c96\u0c97\u0005a\u0000\u0000\u0c97\u0c9a"+
54716 		"\u0003\u00cae\u0000\u0c98\u0c9a\u0005\u009a\u0000\u0000\u0c99\u0c96\u0001"+
54717 		"\u0000\u0000\u0000\u0c99\u0c98\u0001\u0000\u0000\u0000\u0c9a\u01e1\u0001"+
54718 		"\u0000\u0000\u0000\u0c9b\u0c9c\u0005\u00f4\u0000\u0000\u0c9c\u0ca4\u0005"+
54719 		"\u00f7\u0000\u0000\u0c9d\u0c9e\u0005M\u0000\u0000\u0c9e\u0c9f\u0005\u0184"+
54720 		"\u0000\u0000\u0c9f\u0ca0\u0005\u0018\u0000\u0000\u0ca0\u0ca2\u0005\u02b8"+
54721 		"\u0000\u0000\u0ca1\u0ca3\u0005\u00fe\u0000\u0000\u0ca2\u0ca1\u0001\u0000"+
54722 		"\u0000\u0000\u0ca2\u0ca3\u0001\u0000\u0000\u0000\u0ca3\u0ca5\u0001\u0000"+
54723 		"\u0000\u0000\u0ca4\u0c9d\u0001\u0000\u0000\u0000\u0ca4\u0ca5\u0001\u0000"+
54724 		"\u0000\u0000\u0ca5\u0ca7\u0001\u0000\u0000\u0000\u0ca6\u0ca8\u0003\u0166"+
54725 		"\u00b3\u0000\u0ca7\u0ca6\u0001\u0000\u0000\u0000\u0ca7\u0ca8\u0001\u0000"+
54726 		"\u0000\u0000\u0ca8\u01e3\u0001\u0000\u0000\u0000\u0ca9\u0caa\u0005:\u0000"+
54727 		"\u0000\u0caa\u0cab\u0005\u001f\u0000\u0000\u0cab\u0cac\u0005\u01a3\u0000"+
54728 		"\u0000\u0cac\u0cad\u0005\u0018\u0000\u0000\u0cad\u0cae\u0007*\u0000\u0000"+
54729 		"\u0cae\u0cbc\u0005 \u0000\u0000\u0caf\u0cb0\u0005\u0196\u0000\u0000\u0cb0"+
54730 		"\u0cb1\u0005\u0018\u0000\u0000\u0cb1\u0cbc\u0005a\u0000\u0000\u0cb2\u0cb3"+
54731 		"\u0005\u0103\u0000\u0000\u0cb3\u0cb4\u0005\u0018\u0000\u0000\u0cb4\u0cbc"+
54732 		"\u0007%\u0000\u0000\u0cb5\u0cb6\u0005\u018a\u0000\u0000\u0cb6\u0cb7\u0005"+
54733 		"\u0018\u0000\u0000\u0cb7\u0cb9\u0005a\u0000\u0000\u0cb8\u0cba\u0003\u01e6"+
54734 		"\u00f3\u0000\u0cb9\u0cb8\u0001\u0000\u0000\u0000\u0cb9\u0cba\u0001\u0000"+
54735 		"\u0000\u0000\u0cba\u0cbc\u0001\u0000\u0000\u0000\u0cbb\u0ca9\u0001\u0000"+
54736 		"\u0000\u0000\u0cbb\u0caf\u0001\u0000\u0000\u0000\u0cbb\u0cb2\u0001\u0000"+
54737 		"\u0000\u0000\u0cbb\u0cb5\u0001\u0000\u0000\u0000\u0cbc\u01e5\u0001\u0000"+
54738 		"\u0000\u0000\u0cbd\u0cbe\u0005\u001f\u0000\u0000\u0cbe\u0cbf\u0005\u01a2"+
54739 		"\u0000\u0000\u0cbf\u0cc0\u0005\u0018\u0000\u0000\u0cc0\u0cc5\u0003@ \u0000"+
54740 		"\u0cc1\u0cc2\u0005%\u0000\u0000\u0cc2\u0cc3\u0005\u0187\u0000\u0000\u0cc3"+
54741 		"\u0cc4\u0005\u0018\u0000\u0000\u0cc4\u0cc6\u0003\u01c0\u00e0\u0000\u0cc5"+
54742 		"\u0cc1\u0001\u0000\u0000\u0000\u0cc5\u0cc6\u0001\u0000\u0000\u0000\u0cc6"+
54743 		"\u0cc7\u0001\u0000\u0000\u0000\u0cc7\u0cc8\u0005 \u0000\u0000\u0cc8\u01e7"+
54744 		"\u0001\u0000\u0000\u0000\u0cc9\u0cca\u0005\u01de\u0000\u0000\u0cca\u0ccb"+
54745 		"\u0005\u0018\u0000\u0000\u0ccb\u0ccd\u0007+\u0000\u0000\u0ccc\u0cc9\u0001"+
54746 		"\u0000\u0000\u0000\u0ccc\u0ccd\u0001\u0000\u0000\u0000\u0ccd\u0ccf\u0001"+
54747 		"\u0000\u0000\u0000\u0cce\u0cd0\u0003\u01ea\u00f5\u0000\u0ccf\u0cce\u0001"+
54748 		"\u0000\u0000\u0000\u0ccf\u0cd0\u0001\u0000\u0000\u0000\u0cd0\u0cd3\u0001"+
54749 		"\u0000\u0000\u0000\u0cd1\u0cd2\u0005\u00f6\u0000\u0000\u0cd2\u0cd4\u0003"+
54750 		"\u00cae\u0000\u0cd3\u0cd1\u0001\u0000\u0000\u0000\u0cd3\u0cd4\u0001\u0000"+
54751 		"\u0000\u0000\u0cd4\u0cde\u0001\u0000\u0000\u0000\u0cd5\u0cd6\u0005M\u0000"+
54752 		"\u0000\u0cd6\u0cdb\u0003\u01ec\u00f6\u0000\u0cd7\u0cd8\u0005%\u0000\u0000"+
54753 		"\u0cd8\u0cda\u0003\u01ec\u00f6\u0000\u0cd9\u0cd7\u0001\u0000\u0000\u0000"+
54754 		"\u0cda\u0cdd\u0001\u0000\u0000\u0000\u0cdb\u0cd9\u0001\u0000\u0000\u0000"+
54755 		"\u0cdb\u0cdc\u0001\u0000\u0000\u0000\u0cdc\u0cdf\u0001\u0000\u0000\u0000"+
54756 		"\u0cdd\u0cdb\u0001\u0000\u0000\u0000\u0cde\u0cd5\u0001\u0000\u0000\u0000"+
54757 		"\u0cde\u0cdf\u0001\u0000\u0000\u0000\u0cdf\u01e9\u0001\u0000\u0000\u0000"+
54758 		"\u0ce0\u0ce2\u0005a\u0000\u0000\u0ce1\u0ce3\u0005@\u0000\u0000\u0ce2\u0ce1"+
54759 		"\u0001\u0000\u0000\u0000\u0ce2\u0ce3\u0001\u0000\u0000\u0000\u0ce3\u0ce4"+
54760 		"\u0001\u0000\u0000\u0000\u0ce4\u0ce9\u0003\u01f0\u00f8\u0000\u0ce5\u0ce6"+
54761 		"\u0005%\u0000\u0000\u0ce6\u0ce8\u0003\u01f0\u00f8\u0000\u0ce7\u0ce5\u0001"+
54762 		"\u0000\u0000\u0000\u0ce8\u0ceb\u0001\u0000\u0000\u0000\u0ce9\u0ce7\u0001"+
54763 		"\u0000\u0000\u0000\u0ce9\u0cea\u0001\u0000\u0000\u0000\u0cea\u0cf0\u0001"+
54764 		"\u0000\u0000\u0000\u0ceb\u0ce9\u0001\u0000\u0000\u0000\u0cec\u0ced\u0005"+
54765 		"%\u0000\u0000\u0ced\u0cef\u0003\u01f4\u00fa\u0000\u0cee\u0cec\u0001\u0000"+
54766 		"\u0000\u0000\u0cef\u0cf2\u0001\u0000\u0000\u0000\u0cf0\u0cee\u0001\u0000"+
54767 		"\u0000\u0000\u0cf0\u0cf1\u0001\u0000\u0000\u0000\u0cf1\u0cf3\u0001\u0000"+
54768 		"\u0000\u0000\u0cf2\u0cf0\u0001\u0000\u0000\u0000\u0cf3\u0cf4\u0003\u01f8"+
54769 		"\u00fc\u0000\u0cf4\u01eb\u0001\u0000\u0000\u0000\u0cf5\u0cf6\u0005\u0106"+
54770 		"\u0000\u0000\u0cf6\u0cfb\u0003\u01ee\u00f7\u0000\u0cf7\u0cf8\u0005%\u0000"+
54771 		"\u0000\u0cf8\u0cfa\u0003\u01ee\u00f7\u0000\u0cf9\u0cf7\u0001\u0000\u0000"+
54772 		"\u0000\u0cfa\u0cfd\u0001\u0000\u0000\u0000\u0cfb\u0cf9\u0001\u0000\u0000"+
54773 		"\u0000\u0cfb\u0cfc\u0001\u0000\u0000\u0000\u0cfc\u0d18\u0001\u0000\u0000"+
54774 		"\u0000\u0cfd\u0cfb\u0001\u0000\u0000\u0000\u0cfe\u0cff\u0005\u0278\u0000"+
54775 		"\u0000\u0cff\u0d00\u0005\u0018\u0000\u0000\u0d00\u0d18\u0003\u00cae\u0000"+
54776 		"\u0d01\u0d02\u0005\u0279\u0000\u0000\u0d02\u0d03\u0005\u0018\u0000\u0000"+
54777 		"\u0d03\u0d18\u0003\u00cae\u0000\u0d04\u0d05\u0005\u027b\u0000\u0000\u0d05"+
54778 		"\u0d06\u0005\u0018\u0000\u0000\u0d06\u0d18\u0007\u0000\u0000\u0000\u0d07"+
54779 		"\u0d08\u0005\u027c\u0000\u0000\u0d08\u0d09\u0005\u0018\u0000\u0000\u0d09"+
54780 		"\u0d18\u0007\u0000\u0000\u0000\u0d0a\u0d0b\u0005\u027d\u0000\u0000\u0d0b"+
54781 		"\u0d0c\u0005\u0018\u0000\u0000\u0d0c\u0d18\u0003\u00cae\u0000\u0d0d\u0d0e"+
54782 		"\u0005\u01ed\u0000\u0000\u0d0e\u0d18\u0007\u0000\u0000\u0000\u0d0f\u0d10"+
54783 		"\u0005\u01ee\u0000\u0000\u0d10\u0d18\u0007\u0000\u0000\u0000\u0d11\u0d12"+
54784 		"\u0005\u027e\u0000\u0000\u0d12\u0d13\u0005\u0018\u0000\u0000\u0d13\u0d14"+
54785 		"\u0005a\u0000\u0000\u0d14\u0d15\u0005\u027f\u0000\u0000\u0d15\u0d16\u0005"+
54786 		"\u0018\u0000\u0000\u0d16\u0d18\u0003\u00cae\u0000\u0d17\u0cf5\u0001\u0000"+
54787 		"\u0000\u0000\u0d17\u0cfe\u0001\u0000\u0000\u0000\u0d17\u0d01\u0001\u0000"+
54788 		"\u0000\u0000\u0d17\u0d04\u0001\u0000\u0000\u0000\u0d17\u0d07\u0001\u0000"+
54789 		"\u0000\u0000\u0d17\u0d0a\u0001\u0000\u0000\u0000\u0d17\u0d0d\u0001\u0000"+
54790 		"\u0000\u0000\u0d17\u0d0f\u0001\u0000\u0000\u0000\u0d17\u0d11\u0001\u0000"+
54791 		"\u0000\u0000\u0d18\u01ed\u0001\u0000\u0000\u0000\u0d19\u0d1a\u0005\u01ec"+
54792 		"\u0000\u0000\u0d1a\u0d1b\u0005\u0018\u0000\u0000\u0d1b\u0d20\u0007,\u0000"+
54793 		"\u0000\u0d1c\u0d1d\u0005\u027f\u0000\u0000\u0d1d\u0d1e\u0005\u0018\u0000"+
54794 		"\u0000\u0d1e\u0d20\u0003\u00cae\u0000\u0d1f\u0d19\u0001\u0000\u0000\u0000"+
54795 		"\u0d1f\u0d1c\u0001\u0000\u0000\u0000\u0d20\u01ef\u0001\u0000\u0000\u0000"+
54796 		"\u0d21\u0d22\u0005\u001f\u0000\u0000\u0d22\u0d23\u0005\u00aa\u0000\u0000"+
54797 		"\u0d23\u0d24\u0005\u0018\u0000\u0000\u0d24\u0d25\u0003\u00cae\u0000\u0d25"+
54798 		"\u0d26\u0005%\u0000\u0000\u0d26\u0d27\u0005\u01e0\u0000\u0000\u0d27\u0d28"+
54799 		"\u0005\u0018\u0000\u0000\u0d28\u0d29\u0005\u02b7\u0000\u0000\u0d29\u0d2a"+
54800 		"\u0003\u01f2\u00f9\u0000\u0d2a\u0d2b\u0005 \u0000\u0000\u0d2b\u01f1\u0001"+
54801 		"\u0000\u0000\u0000\u0d2c\u0d2d\u0005%\u0000\u0000\u0d2d\u0d2e\u0005\u01e1"+
54802 		"\u0000\u0000\u0d2e\u0d2f\u0005\u0018\u0000\u0000\u0d2f\u0d31\u0003\u001e"+
54803 		"\u000f\u0000\u0d30\u0d32\u0007-\u0000\u0000\u0d31\u0d30\u0001\u0000\u0000"+
54804 		"\u0000\u0d31\u0d32\u0001\u0000\u0000\u0000\u0d32\u0d34\u0001\u0000\u0000"+
54805 		"\u0000\u0d33\u0d2c\u0001\u0000\u0000\u0000\u0d33\u0d34\u0001\u0000\u0000"+
54806 		"\u0000\u0d34\u0d3f\u0001\u0000\u0000\u0000\u0d35\u0d36\u0005%\u0000\u0000"+
54807 		"\u0d36\u0d37\u0005\u01e2\u0000\u0000\u0d37\u0d3d\u0005\u0018\u0000\u0000"+
54808 		"\u0d38\u0d3a\u0003\u001e\u000f\u0000\u0d39\u0d3b\u0007-\u0000\u0000\u0d3a"+
54809 		"\u0d39\u0001\u0000\u0000\u0000\u0d3a\u0d3b\u0001\u0000\u0000\u0000\u0d3b"+
54810 		"\u0d3e\u0001\u0000\u0000\u0000\u0d3c\u0d3e\u0005\u01e4\u0000\u0000\u0d3d"+
54811 		"\u0d38\u0001\u0000\u0000\u0000\u0d3d\u0d3c\u0001\u0000\u0000\u0000\u0d3e"+
54812 		"\u0d40\u0001\u0000\u0000\u0000\u0d3f\u0d35\u0001\u0000\u0000\u0000\u0d3f"+
54813 		"\u0d40\u0001\u0000\u0000\u0000\u0d40\u0d48\u0001\u0000\u0000\u0000\u0d41"+
54814 		"\u0d42\u0005%\u0000\u0000\u0d42\u0d43\u0005\u01e3\u0000\u0000\u0d43\u0d44"+
54815 		"\u0005\u0018\u0000\u0000\u0d44\u0d46\u0003\u001e\u000f\u0000\u0d45\u0d47"+
54816 		"\u0007.\u0000\u0000\u0d46\u0d45\u0001\u0000\u0000\u0000\u0d46\u0d47\u0001"+
54817 		"\u0000\u0000\u0000\u0d47\u0d49\u0001\u0000\u0000\u0000\u0d48\u0d41\u0001"+
54818 		"\u0000\u0000\u0000\u0d48\u0d49\u0001\u0000\u0000\u0000\u0d49\u01f3\u0001"+
54819 		"\u0000\u0000\u0000\u0d4a\u0d4b\u0005\u01eb\u0000\u0000\u0d4b\u0d4d\u0003"+
54820 		"\u00cae\u0000\u0d4c\u0d4e\u0003\u01f6\u00fb\u0000\u0d4d\u0d4c\u0001\u0000"+
54821 		"\u0000\u0000\u0d4d\u0d4e\u0001\u0000\u0000\u0000\u0d4e\u0d4f\u0001\u0000"+
54822 		"\u0000\u0000\u0d4f\u0d54\u0003\u01f0\u00f8\u0000\u0d50\u0d51\u0005%\u0000"+
54823 		"\u0000\u0d51\u0d53\u0003\u01f0\u00f8\u0000\u0d52\u0d50\u0001\u0000\u0000"+
54824 		"\u0000\u0d53\u0d56\u0001\u0000\u0000\u0000\u0d54\u0d52\u0001\u0000\u0000"+
54825 		"\u0000\u0d54\u0d55\u0001\u0000\u0000\u0000\u0d55\u01f5\u0001\u0000\u0000"+
54826 		"\u0000\u0d56\u0d54\u0001\u0000\u0000\u0000\u0d57\u0d58\u0005\u01e9\u0000"+
54827 		"\u0000\u0d58\u0d5a\u0005\u0106\u0000\u0000\u0d59\u0d57\u0001\u0000\u0000"+
54828 		"\u0000\u0d59\u0d5a\u0001\u0000\u0000\u0000\u0d5a\u0d5c\u0001\u0000\u0000"+
54829 		"\u0000\u0d5b\u0d5d\u0005\u009a\u0000\u0000\u0d5c\u0d5b\u0001\u0000\u0000"+
54830 		"\u0000\u0d5c\u0d5d\u0001\u0000\u0000\u0000\u0d5d\u0d61\u0001\u0000\u0000"+
54831 		"\u0000\u0d5e\u0d5f\u0005\u01e9\u0000\u0000\u0d5f\u0d61\u0005\u01ea\u0000"+
54832 		"\u0000\u0d60\u0d59\u0001\u0000\u0000\u0000\u0d60\u0d5e\u0001\u0000\u0000"+
54833 		"\u0000\u0d61\u01f7\u0001\u0000\u0000\u0000\u0d62\u0d63\u0005\u0175\u0000"+
54834 		"\u0000\u0d63\u0d64\u0005a\u0000\u0000\u0d64\u0d69\u0003\u01f0\u00f8\u0000"+
54835 		"\u0d65\u0d66\u0005%\u0000\u0000\u0d66\u0d68\u0003\u01f0\u00f8\u0000\u0d67"+
54836 		"\u0d65\u0001\u0000\u0000\u0000\u0d68\u0d6b\u0001\u0000\u0000\u0000\u0d69"+
54837 		"\u0d67\u0001\u0000\u0000\u0000\u0d69\u0d6a\u0001\u0000\u0000\u0000\u0d6a"+
54838 		"\u0d6d\u0001\u0000\u0000\u0000\u0d6b\u0d69\u0001\u0000\u0000\u0000\u0d6c"+
54839 		"\u0d62\u0001\u0000\u0000\u0000\u0d6c\u0d6d\u0001\u0000\u0000\u0000\u0d6d"+
54840 		"\u01f9\u0001\u0000\u0000\u0000\u0d6e\u0d78\u0005\u00cd\u0000\u0000\u0d6f"+
54841 		"\u0d74\u0003\u01fc\u00fe\u0000\u0d70\u0d71\u0005%\u0000\u0000\u0d71\u0d73"+
54842 		"\u0003\u01fc\u00fe\u0000\u0d72\u0d70\u0001\u0000\u0000\u0000\u0d73\u0d76"+
54843 		"\u0001\u0000\u0000\u0000\u0d74\u0d72\u0001\u0000\u0000\u0000\u0d74\u0d75"+
54844 		"\u0001\u0000\u0000\u0000\u0d75\u0d79\u0001\u0000\u0000\u0000\u0d76\u0d74"+
54845 		"\u0001\u0000\u0000\u0000\u0d77\u0d79\u0003\u01fe\u00ff\u0000\u0d78\u0d6f"+
54846 		"\u0001\u0000\u0000\u0000\u0d78\u0d77\u0001\u0000\u0000\u0000\u0d79\u01fb"+
54847 		"\u0001\u0000\u0000\u0000\u0d7a\u0d7c\u0003\u00d0h\u0000\u0d7b\u0d7d\u0005"+
54848 		"`\u0000\u0000\u0d7c\u0d7b\u0001\u0000\u0000\u0000\u0d7c\u0d7d\u0001\u0000"+
54849 		"\u0000\u0000\u0d7d\u0d7e\u0001\u0000\u0000\u0000\u0d7e\u0d81\u0003\u0094"+
54850 		"J\u0000\u0d7f\u0d80\u0005\u0018\u0000\u0000\u0d80\u0d82\u0003r9\u0000"+
54851 		"\u0d81\u0d7f\u0001\u0000\u0000\u0000\u0d81\u0d82\u0001\u0000\u0000\u0000"+
54852 		"\u0d82\u0d87\u0001\u0000\u0000\u0000\u0d83\u0d84\u0003\u00d0h\u0000\u0d84"+
54853 		"\u0d85\u0005\u00ce\u0000\u0000\u0d85\u0d87\u0001\u0000\u0000\u0000\u0d86"+
54854 		"\u0d7a\u0001\u0000\u0000\u0000\u0d86\u0d83\u0001\u0000\u0000\u0000\u0d87"+
54855 		"\u01fd\u0001\u0000\u0000\u0000\u0d88\u0d8a\u0003\u00d0h\u0000\u0d89\u0d8b"+
54856 		"\u0005`\u0000\u0000\u0d8a\u0d89\u0001\u0000\u0000\u0000\u0d8a\u0d8b\u0001"+
54857 		"\u0000\u0000\u0000\u0d8b\u0d8c\u0001\u0000\u0000\u0000\u0d8c\u0d8d\u0003"+
54858 		"\u0200\u0100\u0000\u0d8d\u01ff\u0001\u0000\u0000\u0000\u0d8e\u0d8f\u0005"+
54859 		";\u0000\u0000\u0d8f\u0d90\u0005\u001f\u0000\u0000\u0d90\u0d95\u0003\u0202"+
54860 		"\u0101\u0000\u0d91\u0d92\u0005%\u0000\u0000\u0d92\u0d94\u0003\u0202\u0101"+
54861 		"\u0000\u0d93\u0d91\u0001\u0000\u0000\u0000\u0d94\u0d97\u0001\u0000\u0000"+
54862 		"\u0000\u0d95\u0d93\u0001\u0000\u0000\u0000\u0d95\u0d96\u0001\u0000\u0000"+
54863 		"\u0000\u0d96\u0d98\u0001\u0000\u0000\u0000\u0d97\u0d95\u0001\u0000\u0000"+
54864 		"\u0000\u0d98\u0d99\u0005 \u0000\u0000\u0d99\u0201\u0001\u0000\u0000\u0000"+
54865 		"\u0d9a\u0d9d\u0003\u0204\u0102\u0000\u0d9b\u0d9d\u0003\u0208\u0104\u0000"+
54866 		"\u0d9c\u0d9a\u0001\u0000\u0000\u0000\u0d9c\u0d9b\u0001\u0000\u0000\u0000"+
54867 		"\u0d9d\u0203\u0001\u0000\u0000\u0000\u0d9e\u0da2\u0003H$\u0000\u0d9f\u0da3"+
54868 		"\u0003\u0096K\u0000\u0da0\u0da1\u0005`\u0000\u0000\u0da1\u0da3\u0003b"+
54869 		"1\u0000\u0da2\u0d9f\u0001\u0000\u0000\u0000\u0da2\u0da0\u0001\u0000\u0000"+
54870 		"\u0000\u0da3\u0da6\u0001\u0000\u0000\u0000\u0da4\u0da5\u0005\u00f6\u0000"+
54871 		"\u0000\u0da5\u0da7\u0003Z-\u0000\u0da6\u0da4\u0001\u0000\u0000\u0000\u0da6"+
54872 		"\u0da7\u0001\u0000\u0000\u0000\u0da7\u0db4\u0001\u0000\u0000\u0000\u0da8"+
54873 		"\u0da9\u0005\u009a\u0000\u0000\u0da9\u0dab\u0003b1\u0000\u0daa\u0da8\u0001"+
54874 		"\u0000\u0000\u0000\u0daa\u0dab\u0001\u0000\u0000\u0000\u0dab\u0db5\u0001"+
54875 		"\u0000\u0000\u0000\u0dac\u0db2\u0005\u010c\u0000\u0000\u0dad\u0dae\u0005"+
54876 		"\u001f\u0000\u0000\u0dae\u0daf\u0005\u02b8\u0000\u0000\u0daf\u0db0\u0005"+
54877 		"%\u0000\u0000\u0db0\u0db1\u0005\u02b8\u0000\u0000\u0db1\u0db3\u0005 \u0000"+
54878 		"\u0000\u0db2\u0dad\u0001\u0000\u0000\u0000\u0db2\u0db3\u0001\u0000\u0000"+
54879 		"\u0000\u0db3\u0db5\u0001\u0000\u0000\u0000\u0db4\u0daa\u0001\u0000\u0000"+
54880 		"\u0000\u0db4\u0dac\u0001\u0000\u0000\u0000\u0db5\u0db7\u0001\u0000\u0000"+
54881 		"\u0000\u0db6\u0db8\u0005\u0125\u0000\u0000\u0db7\u0db6\u0001\u0000\u0000"+
54882 		"\u0000\u0db7\u0db8\u0001\u0000\u0000\u0000\u0db8\u0db9\u0001\u0000\u0000"+
54883 		"\u0000\u0db9\u0dba\u0003\u0206\u0103\u0000\u0dba\u0205\u0001\u0000\u0000"+
54884 		"\u0000\u0dbb\u0dbf\u0005l\u0000\u0000\u0dbc\u0dbd\u0005k\u0000\u0000\u0dbd"+
54885 		"\u0dbf\u0005l\u0000\u0000\u0dbe\u0dbb\u0001\u0000\u0000\u0000\u0dbe\u0dbc"+
54886 		"\u0001\u0000\u0000\u0000\u0dbe\u0dbf\u0001\u0000\u0000\u0000\u0dbf\u0dcd"+
54887 		"\u0001\u0000\u0000\u0000\u0dc0\u0dc1\u0005@\u0000\u0000\u0dc1\u0dc4\u0005"+
54888 		"C\u0000\u0000\u0dc2\u0dc4\u0005A\u0000\u0000\u0dc3\u0dc0\u0001\u0000\u0000"+
54889 		"\u0000\u0dc3\u0dc2\u0001\u0000\u0000\u0000\u0dc3\u0dc4\u0001\u0000\u0000"+
54890 		"\u0000\u0dc4\u0dcd\u0001\u0000\u0000\u0000\u0dc5\u0dc6\u0005\u00e6\u0000"+
54891 		"\u0000\u0dc6\u0dc7\u0005\u001f\u0000\u0000\u0dc7\u0dc8\u0003b1\u0000\u0dc8"+
54892 		"\u0dc9\u0005 \u0000\u0000\u0dc9\u0dcd\u0001\u0000\u0000\u0000\u0dca\u0dcb"+
54893 		"\u0005M\u0000\u0000\u0dcb\u0dcd\u0003\u00b2Y\u0000\u0dcc\u0dbe\u0001\u0000"+
54894 		"\u0000\u0000\u0dcc\u0dc3\u0001\u0000\u0000\u0000\u0dcc\u0dc5\u0001\u0000"+
54895 		"\u0000\u0000\u0dcc\u0dca\u0001\u0000\u0000\u0000\u0dcd\u0207\u0001\u0000"+
54896 		"\u0000\u0000\u0dce\u0dcf\u0005@\u0000\u0000\u0dcf\u0dd2\u0005C\u0000\u0000"+
54897 		"\u0dd0\u0dd2\u0005A\u0000\u0000\u0dd1\u0dce\u0001\u0000\u0000\u0000\u0dd1"+
54898 		"\u0dd0\u0001\u0000\u0000\u0000\u0dd2\u0dd3\u0001\u0000\u0000\u0000\u0dd3"+
54899 		"\u0dd4\u0005\u001f\u0000\u0000\u0dd4\u0dd9\u0003H$\u0000\u0dd5\u0dd6\u0005"+
54900 		"%\u0000\u0000\u0dd6\u0dd8\u0003H$\u0000\u0dd7\u0dd5\u0001\u0000\u0000"+
54901 		"\u0000\u0dd8\u0ddb\u0001\u0000\u0000\u0000\u0dd9\u0dd7\u0001\u0000\u0000"+
54902 		"\u0000\u0dd9\u0dda\u0001\u0000\u0000\u0000\u0dda\u0ddc\u0001\u0000\u0000"+
54903 		"\u0000\u0ddb\u0dd9\u0001\u0000\u0000\u0000\u0ddc\u0ddd\u0005 \u0000\u0000"+
54904 		"\u0ddd\u0de1\u0001\u0000\u0000\u0000\u0dde\u0ddf\u0005\u00e6\u0000\u0000"+
54905 		"\u0ddf\u0de1\u0003b1\u0000\u0de0\u0dd1\u0001\u0000\u0000\u0000\u0de0\u0dde"+
54906 		"\u0001\u0000\u0000\u0000\u0de1\u0209\u0001\u0000\u0000\u0000\u0de2\u0de3"+
54907 		"\u0005:\u0000\u0000\u0de3\u0de4\u0003\u00d0h\u0000\u0de4\u0de5\u0003\u020c"+
54908 		"\u0106\u0000\u0de5\u020b\u0001\u0000\u0000\u0000\u0de6\u0de7\u0005\u0014"+
54909 		"\u0000\u0000\u0de7\u0de9\u0003*\u0015\u0000\u0de8\u0de6\u0001\u0000\u0000"+
54910 		"\u0000\u0de8\u0de9\u0001\u0000\u0000\u0000\u0de9\u0dea\u0001\u0000\u0000"+
54911 		"\u0000\u0dea\u0df1\u0005\u0018\u0000\u0000\u0deb\u0df2\u0003b1\u0000\u0dec"+
54912 		"\u0ded\u0003*\u0015\u0000\u0ded\u0dee\u0005\u0014\u0000\u0000\u0dee\u0def"+
54913 		"\u0003*\u0015\u0000\u0def\u0df2\u0001\u0000\u0000\u0000\u0df0\u0df2\u0005"+
54914 		"\u02be\u0000\u0000\u0df1\u0deb\u0001\u0000\u0000\u0000\u0df1\u0dec\u0001"+
54915 		"\u0000\u0000\u0000\u0df1\u0df0\u0001\u0000\u0000\u0000\u0df2\u0dfe\u0001"+
54916 		"\u0000\u0000\u0000\u0df3\u0df4\u0003\u0212\u0109\u0000\u0df4\u0df5\u0003"+
54917 		"b1\u0000\u0df5\u0dfe\u0001\u0000\u0000\u0000\u0df6\u0df7\u0005\u0018\u0000"+
54918 		"\u0000\u0df7\u0dfe\u0003\u020e\u0107\u0000\u0df8\u0df9\u0005\u0018\u0000"+
54919 		"\u0000\u0df9\u0dfa\u0005\u001f\u0000\u0000\u0dfa\u0dfb\u0003\u02bc\u015e"+
54920 		"\u0000\u0dfb\u0dfc\u0005 \u0000\u0000\u0dfc\u0dfe\u0001\u0000\u0000\u0000"+
54921 		"\u0dfd\u0de8\u0001\u0000\u0000\u0000\u0dfd\u0df3\u0001\u0000\u0000\u0000"+
54922 		"\u0dfd\u0df6\u0001\u0000\u0000\u0000\u0dfd\u0df8\u0001\u0000\u0000\u0000"+
54923 		"\u0dfe\u020d\u0001\u0000\u0000\u0000\u0dff\u0e13\u0003\u00d0h\u0000\u0e00"+
54924 		"\u0e01\u0005\u00ce\u0000\u0000\u0e01\u0e02\u0003\u0210\u0108\u0000\u0e02"+
54925 		"\u0e03\u0005f\u0000\u0000\u0e03\u0e04\u0003\u02bc\u015e\u0000\u0e04\u0e10"+
54926 		"\u0005f\u0000\u0000\u0e05\u0e11\u0005\u00cb\u0000\u0000\u0e06\u0e07\u0005"+
54927 		"0\u0000\u0000\u0e07\u0e08\u0005\u00cf\u0000\u0000\u0e08\u0e0d\u0003N\'"+
54928 		"\u0000\u0e09\u0e0a\u0005%\u0000\u0000\u0e0a\u0e0c\u0003N\'\u0000\u0e0b"+
54929 		"\u0e09\u0001\u0000\u0000\u0000\u0e0c\u0e0f\u0001\u0000\u0000\u0000\u0e0d"+
54930 		"\u0e0b\u0001\u0000\u0000\u0000\u0e0d\u0e0e\u0001\u0000\u0000\u0000\u0e0e"+
54931 		"\u0e11\u0001\u0000\u0000\u0000\u0e0f\u0e0d\u0001\u0000\u0000\u0000\u0e10"+
54932 		"\u0e05\u0001\u0000\u0000\u0000\u0e10\u0e06\u0001\u0000\u0000\u0000\u0e11"+
54933 		"\u0e13\u0001\u0000\u0000\u0000\u0e12\u0dff\u0001\u0000\u0000\u0000\u0e12"+
54934 		"\u0e00\u0001\u0000\u0000\u0000\u0e13\u020f\u0001\u0000\u0000\u0000\u0e14"+
54935 		"\u0e16\u0007/\u0000\u0000\u0e15\u0e14\u0001\u0000\u0000\u0000\u0e15\u0e16"+
54936 		"\u0001\u0000\u0000\u0000\u0e16\u0e18\u0001\u0000\u0000\u0000\u0e17\u0e19"+
54937 		"\u00070\u0000\u0000\u0e18\u0e17\u0001\u0000\u0000\u0000\u0e18\u0e19\u0001"+
54938 		"\u0000\u0000\u0000\u0e19\u0e1b\u0001\u0000\u0000\u0000\u0e1a\u0e1c\u0007"+
54939 		"1\u0000\u0000\u0e1b\u0e1a\u0001\u0000\u0000\u0000\u0e1b\u0e1c\u0001\u0000"+
54940 		"\u0000\u0000\u0e1c\u0e1e\u0001\u0000\u0000\u0000\u0e1d\u0e1f\u0005\u01f7"+
54941 		"\u0000\u0000\u0e1e\u0e1d\u0001\u0000\u0000\u0000\u0e1e\u0e1f\u0001\u0000"+
54942 		"\u0000\u0000\u0e1f\u0211\u0001\u0000\u0000\u0000\u0e20\u0e21\u0005\u000f"+
54943 		"\u0000\u0000\u0e21\u0e31\u0005\u0018\u0000\u0000\u0e22\u0e23\u0005\u0010"+
54944 		"\u0000\u0000\u0e23\u0e31\u0005\u0018\u0000\u0000\u0e24\u0e25\u0005\u0011"+
54945 		"\u0000\u0000\u0e25\u0e31\u0005\u0018\u0000\u0000\u0e26\u0e27\u0005\u0012"+
54946 		"\u0000\u0000\u0e27\u0e31\u0005\u0018\u0000\u0000\u0e28\u0e29\u0005\r\u0000"+
54947 		"\u0000\u0e29\u0e31\u0005\u0018\u0000\u0000\u0e2a\u0e2b\u0005\t\u0000\u0000"+
54948 		"\u0e2b\u0e31\u0005\u0018\u0000\u0000\u0e2c\u0e2d\u0005\f\u0000\u0000\u0e2d"+
54949 		"\u0e31\u0005\u0018\u0000\u0000\u0e2e\u0e2f\u0005\b\u0000\u0000\u0e2f\u0e31"+
54950 		"\u0005\u0018\u0000\u0000\u0e30\u0e20\u0001\u0000\u0000\u0000\u0e30\u0e22"+
54951 		"\u0001\u0000\u0000\u0000\u0e30\u0e24\u0001\u0000\u0000\u0000\u0e30\u0e26"+
54952 		"\u0001\u0000\u0000\u0000\u0e30\u0e28\u0001\u0000\u0000\u0000\u0e30\u0e2a"+
54953 		"\u0001\u0000\u0000\u0000\u0e30\u0e2c\u0001\u0000\u0000\u0000\u0e30\u0e2e"+
54954 		"\u0001\u0000\u0000\u0000\u0e31\u0213\u0001\u0000\u0000\u0000\u0e32\u0e46"+
54955 		"\u0005\u001f\u0000\u0000\u0e33\u0e35\u0003\u00d0h\u0000\u0e34\u0e36\u0005"+
54956 		"`\u0000\u0000\u0e35\u0e34\u0001\u0000\u0000\u0000\u0e35\u0e36\u0001\u0000"+
54957 		"\u0000\u0000\u0e36\u0e3a\u0001\u0000\u0000\u0000\u0e37\u0e38\u0003L&\u0000"+
54958 		"\u0e38\u0e39\u0005\u0014\u0000\u0000\u0e39\u0e3b\u0001\u0000\u0000\u0000"+
54959 		"\u0e3a\u0e37\u0001\u0000\u0000\u0000\u0e3a\u0e3b\u0001\u0000\u0000\u0000"+
54960 		"\u0e3b\u0e3c\u0001\u0000\u0000\u0000\u0e3c\u0e3f\u0003\u0094J\u0000\u0e3d"+
54961 		"\u0e3e\u0005\u0018\u0000\u0000\u0e3e\u0e40\u0003\u00cae\u0000\u0e3f\u0e3d"+
54962 		"\u0001\u0000\u0000\u0000\u0e3f\u0e40\u0001\u0000\u0000\u0000\u0e40\u0e42"+
54963 		"\u0001\u0000\u0000\u0000\u0e41\u0e43\u0005\u00d3\u0000\u0000\u0e42\u0e41"+
54964 		"\u0001\u0000\u0000\u0000\u0e42\u0e43\u0001\u0000\u0000\u0000\u0e43\u0e45"+
54965 		"\u0001\u0000\u0000\u0000\u0e44\u0e33\u0001\u0000\u0000\u0000\u0e45\u0e48"+
54966 		"\u0001\u0000\u0000\u0000\u0e46\u0e44\u0001\u0000\u0000\u0000\u0e46\u0e47"+
54967 		"\u0001\u0000\u0000\u0000\u0e47\u0e49\u0001\u0000\u0000\u0000\u0e48\u0e46"+
54968 		"\u0001\u0000\u0000\u0000\u0e49\u0e4a\u0005 \u0000\u0000\u0e4a\u0215\u0001"+
54969 		"\u0000\u0000\u0000\u0e4b\u0e4f\u0003\u021c\u010e\u0000\u0e4c\u0e4f\u0003"+
54970 		"\u021a\u010d\u0000\u0e4d\u0e4f\u0003\u0218\u010c\u0000\u0e4e\u0e4b\u0001"+
54971 		"\u0000\u0000\u0000\u0e4e\u0e4c\u0001\u0000\u0000\u0000\u0e4e\u0e4d\u0001"+
54972 		"\u0000\u0000\u0000\u0e4f\u0217\u0001\u0000\u0000\u0000\u0e50\u0e51\u0005"+
54973 		"\u00d0\u0000\u0000\u0e51\u0e52\u0003\u00d0h\u0000\u0e52\u0e53\u0005;\u0000"+
54974 		"\u0000\u0e53\u0e5d\u0003\u0134\u009a\u0000\u0e54\u0e55\u0005M\u0000\u0000"+
54975 		"\u0e55\u0e5a\u0003\u0222\u0111\u0000\u0e56\u0e57\u0005%\u0000\u0000\u0e57"+
54976 		"\u0e59\u0003\u0222\u0111\u0000\u0e58\u0e56\u0001\u0000\u0000\u0000\u0e59"+
54977 		"\u0e5c\u0001\u0000\u0000\u0000\u0e5a\u0e58\u0001\u0000\u0000\u0000\u0e5a"+
54978 		"\u0e5b\u0001\u0000\u0000\u0000\u0e5b\u0e5e\u0001\u0000\u0000\u0000\u0e5c"+
54979 		"\u0e5a\u0001\u0000\u0000\u0000\u0e5d\u0e54\u0001\u0000\u0000\u0000\u0e5d"+
54980 		"\u0e5e\u0001\u0000\u0000\u0000\u0e5e\u0e60\u0001\u0000\u0000\u0000\u0e5f"+
54981 		"\u0e61\u0005`\u0000\u0000\u0e60\u0e5f\u0001\u0000\u0000\u0000\u0e60\u0e61"+
54982 		"\u0001\u0000\u0000\u0000\u0e61\u0e62\u0001\u0000\u0000\u0000\u0e62\u0e63"+
54983 		"\u0005}\u0000\u0000\u0e63\u0e64\u0003\u0220\u0110\u0000\u0e64\u0e65\u0005"+
54984 		"\u00d2\u0000\u0000\u0e65\u0e66\u0005\u0105\u0000\u0000\u0e66\u0219\u0001"+
54985 		"\u0000\u0000\u0000\u0e67\u0e68\u0005\u00d0\u0000\u0000\u0e68\u0e72\u0005"+
54986 		";\u0000\u0000\u0e69\u0e6a\u0005M\u0000\u0000\u0e6a\u0e6f\u0003\u0222\u0111"+
54987 		"\u0000\u0e6b\u0e6c\u0005%\u0000\u0000\u0e6c\u0e6e\u0003\u0222\u0111\u0000"+
54988 		"\u0e6d\u0e6b\u0001\u0000\u0000\u0000\u0e6e\u0e71\u0001\u0000\u0000\u0000"+
54989 		"\u0e6f\u0e6d\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0001\u0000\u0000\u0000"+
54990 		"\u0e70\u0e73\u0001\u0000\u0000\u0000\u0e71\u0e6f\u0001\u0000\u0000\u0000"+
54991 		"\u0e72\u0e69\u0001\u0000\u0000\u0000\u0e72\u0e73\u0001\u0000\u0000\u0000"+
54992 		"\u0e73\u0e75\u0001\u0000\u0000\u0000\u0e74\u0e76\u0005`\u0000\u0000\u0e75"+
54993 		"\u0e74\u0001\u0000\u0000\u0000\u0e75\u0e76\u0001\u0000\u0000\u0000\u0e76"+
54994 		"\u0e77\u0001\u0000\u0000\u0000\u0e77\u0e79\u0005\u00d2\u0000\u0000\u0e78"+
54995 		"\u0e7a\u0005\u001f\u0000\u0000\u0e79\u0e78\u0001\u0000\u0000\u0000\u0e79"+
54996 		"\u0e7a\u0001\u0000\u0000\u0000\u0e7a\u0e7b\u0001\u0000\u0000\u0000\u0e7b"+
54997 		"\u0e7d\u0003\u02bc\u015e\u0000\u0e7c\u0e7e\u0005 \u0000\u0000\u0e7d\u0e7c"+
54998 		"\u0001\u0000\u0000\u0000\u0e7d\u0e7e\u0001\u0000\u0000\u0000\u0e7e\u021b"+
54999 		"\u0001\u0000\u0000\u0000\u0e7f\u0e80\u0005\u00d0\u0000\u0000\u0e80\u0e8a"+
55000 		"\u0003\u0094J\u0000\u0e81\u0e82\u0005M\u0000\u0000\u0e82\u0e87\u0003\u0222"+
55001 		"\u0111\u0000\u0e83\u0e84\u0005%\u0000\u0000\u0e84\u0e86\u0003\u0222\u0111"+
55002 		"\u0000\u0e85\u0e83\u0001\u0000\u0000\u0000\u0e86\u0e89\u0001\u0000\u0000"+
55003 		"\u0000\u0e87\u0e85\u0001\u0000\u0000\u0000\u0e87\u0e88\u0001\u0000\u0000"+
55004 		"\u0000\u0e88\u0e8b\u0001\u0000\u0000\u0000\u0e89\u0e87\u0001\u0000\u0000"+
55005 		"\u0000\u0e8a\u0e81\u0001\u0000\u0000\u0000\u0e8a\u0e8b\u0001\u0000\u0000"+
55006 		"\u0000\u0e8b\u0e8d\u0001\u0000\u0000\u0000\u0e8c\u0e8e\u0005`\u0000\u0000"+
55007 		"\u0e8d\u0e8c\u0001\u0000\u0000\u0000\u0e8d\u0e8e\u0001\u0000\u0000\u0000"+
55008 		"\u0e8e\u0e8f\u0001\u0000\u0000\u0000\u0e8f\u0e90\u0005}\u0000\u0000\u0e90"+
55009 		"\u0e91\u0003\u0220\u0110\u0000\u0e91\u0e92\u0005\u00d2\u0000\u0000\u0e92"+
55010 		"\u0e93\u0003b1\u0000\u0e93\u021d\u0001\u0000\u0000\u0000\u0e94\u0e95\u0003"+
55011 		"\u0138\u009c\u0000\u0e95\u0e96\u0003\u013e\u009f\u0000\u0e96\u0e99\u0001"+
55012 		"\u0000\u0000\u0000\u0e97\u0e99\u0003\u016e\u00b7\u0000\u0e98\u0e94\u0001"+
55013 		"\u0000\u0000\u0000\u0e98\u0e97\u0001\u0000\u0000\u0000\u0e99\u0e9d\u0001"+
55014 		"\u0000\u0000\u0000\u0e9a\u0e9c\u0003\u0172\u00b9\u0000\u0e9b\u0e9a\u0001"+
55015 		"\u0000\u0000\u0000\u0e9c\u0e9f\u0001\u0000\u0000\u0000\u0e9d\u0e9b\u0001"+
55016 		"\u0000\u0000\u0000\u0e9d\u0e9e\u0001\u0000\u0000\u0000\u0e9e\u021f\u0001"+
55017 		"\u0000\u0000\u0000\u0e9f\u0e9d\u0001\u0000\u0000\u0000\u0ea0\u0ea2\u0003"+
55018 		"\u0224\u0112\u0000\u0ea1\u0ea0\u0001\u0000\u0000\u0000\u0ea2\u0ea5\u0001"+
55019 		"\u0000\u0000\u0000\u0ea3\u0ea1\u0001\u0000\u0000\u0000\u0ea3\u0ea4\u0001"+
55020 		"\u0000\u0000\u0000\u0ea4\u0221\u0001\u0000\u0000\u0000\u0ea5\u0ea3\u0001"+
55021 		"\u0000\u0000\u0000\u0ea6\u0ea8\u0005\u015d\u0000\u0000\u0ea7\u0ea6\u0001"+
55022 		"\u0000\u0000\u0000\u0ea7\u0ea8\u0001\u0000\u0000\u0000\u0ea8\u0ec0\u0001"+
55023 		"\u0000\u0000\u0000\u0ea9\u0eab\u0005\u01f8\u0000\u0000\u0eaa\u0ea9\u0001"+
55024 		"\u0000\u0000\u0000\u0eaa\u0eab\u0001\u0000\u0000\u0000\u0eab\u0ec0\u0001"+
55025 		"\u0000\u0000\u0000\u0eac\u0ead\u0005\u00d0\u0000\u0000\u0ead\u0eae\u0005"+
55026 		"l\u0000\u0000\u0eae\u0eaf\u0005a\u0000\u0000\u0eaf\u0eb0\u0005l\u0000"+
55027 		"\u0000\u0eb0\u0eb6\u0005\u01fa\u0000\u0000\u0eb1\u0eb2\u0005\u01fb\u0000"+
55028 		"\u0000\u0eb2\u0eb3\u0005a\u0000\u0000\u0eb3\u0eb4\u0005l\u0000\u0000\u0eb4"+
55029 		"\u0eb6\u0005\u01fa\u0000\u0000\u0eb5\u0eac\u0001\u0000\u0000\u0000\u0eb5"+
55030 		"\u0eb1\u0001\u0000\u0000\u0000\u0eb5\u0eb6\u0001\u0000\u0000\u0000\u0eb6"+
55031 		"\u0ec0\u0001\u0000\u0000\u0000\u0eb7\u0eb9\u0003\u00d2i\u0000\u0eb8\u0eb7"+
55032 		"\u0001\u0000\u0000\u0000\u0eb8\u0eb9\u0001\u0000\u0000\u0000\u0eb9\u0ec0"+
55033 		"\u0001\u0000\u0000\u0000\u0eba\u0ebb\u0005\u027a\u0000\u0000\u0ebb\u0ebc"+
55034 		"\u0005\u0018\u0000\u0000\u0ebc\u0ebe\u0007\u0000\u0000\u0000\u0ebd\u0eba"+
55035 		"\u0001\u0000\u0000\u0000\u0ebd\u0ebe\u0001\u0000\u0000\u0000\u0ebe\u0ec0"+
55036 		"\u0001\u0000\u0000\u0000\u0ebf\u0ea7\u0001\u0000\u0000\u0000\u0ebf\u0eaa"+
55037 		"\u0001\u0000\u0000\u0000\u0ebf\u0eb5\u0001\u0000\u0000\u0000\u0ebf\u0eb8"+
55038 		"\u0001\u0000\u0000\u0000\u0ebf\u0ebd\u0001\u0000\u0000\u0000\u0ec0\u0223"+
55039 		"\u0001\u0000\u0000\u0000\u0ec1\u0ecc\u0003\u00e6s\u0000\u0ec2\u0ecc\u0003"+
55040 		"\u00fc~\u0000\u0ec3\u0ecc\u0003\u0110\u0088\u0000\u0ec4\u0ecc\u0003\u0124"+
55041 		"\u0092\u0000\u0ec5\u0ecc\u0003\u029e\u014f\u0000\u0ec6\u0ecc\u0003\u02aa"+
55042 		"\u0155\u0000\u0ec7\u0ecc\u0003\u02b4\u015a\u0000\u0ec8\u0ecc\u0003\u02bc"+
55043 		"\u015e\u0000\u0ec9\u0ecc\u0003\u020a\u0105\u0000\u0eca\u0ecc\u0003\u01fa"+
55044 		"\u00fd\u0000\u0ecb\u0ec1\u0001\u0000\u0000\u0000\u0ecb\u0ec2\u0001\u0000"+
55045 		"\u0000\u0000\u0ecb\u0ec3\u0001\u0000\u0000\u0000\u0ecb\u0ec4\u0001\u0000"+
55046 		"\u0000\u0000\u0ecb\u0ec5\u0001\u0000\u0000\u0000\u0ecb\u0ec6\u0001\u0000"+
55047 		"\u0000\u0000\u0ecb\u0ec7\u0001\u0000\u0000\u0000\u0ecb\u0ec8\u0001\u0000"+
55048 		"\u0000\u0000\u0ecb\u0ec9\u0001\u0000\u0000\u0000\u0ecb\u0eca\u0001\u0000"+
55049 		"\u0000\u0000\u0ecc\u0ece\u0001\u0000\u0000\u0000\u0ecd\u0ecf\u0005+\u0000"+
55050 		"\u0000\u0ece\u0ecd\u0001\u0000\u0000\u0000\u0ece\u0ecf\u0001\u0000\u0000"+
55051 		"\u0000\u0ecf\u0225\u0001\u0000\u0000\u0000\u0ed0\u0ed5\u0003\u0228\u0114"+
55052 		"\u0000\u0ed1\u0ed2\u0005%\u0000\u0000\u0ed2\u0ed4\u0003\u0228\u0114\u0000"+
55053 		"\u0ed3\u0ed1\u0001\u0000\u0000\u0000\u0ed4\u0ed7\u0001\u0000\u0000\u0000"+
55054 		"\u0ed5\u0ed3\u0001\u0000\u0000\u0000\u0ed5\u0ed6\u0001\u0000\u0000\u0000"+
55055 		"\u0ed6\u0ed9\u0001\u0000\u0000\u0000\u0ed7\u0ed5\u0001\u0000\u0000\u0000"+
55056 		"\u0ed8\u0ed0\u0001\u0000\u0000\u0000\u0ed8\u0ed9\u0001\u0000\u0000\u0000"+
55057 		"\u0ed9\u0227\u0001\u0000\u0000\u0000\u0eda\u0edc\u0003\u01fc\u00fe\u0000"+
55058 		"\u0edb\u0edd\u0005\u01fc\u0000\u0000\u0edc\u0edb\u0001\u0000\u0000\u0000"+
55059 		"\u0edc\u0edd\u0001\u0000\u0000\u0000\u0edd\u0ee0\u0001\u0000\u0000\u0000"+
55060 		"\u0ede\u0edf\u0005\u0018\u0000\u0000\u0edf\u0ee1\u0003\u001a\r\u0000\u0ee0"+
55061 		"\u0ede\u0001\u0000\u0000\u0000\u0ee0\u0ee1\u0001\u0000\u0000\u0000\u0ee1"+
55062 		"\u0ee3\u0001\u0000\u0000\u0000\u0ee2\u0ee4\u00072\u0000\u0000\u0ee3\u0ee2"+
55063 		"\u0001\u0000\u0000\u0000\u0ee3\u0ee4\u0001\u0000\u0000\u0000\u0ee4\u0229"+
55064 		"\u0001\u0000\u0000\u0000\u0ee5\u0ee7\u0003\u022c\u0116\u0000\u0ee6\u0ee5"+
55065 		"\u0001\u0000\u0000\u0000\u0ee6\u0ee7\u0001\u0000\u0000\u0000\u0ee7\u0eea"+
55066 		"\u0001\u0000\u0000\u0000\u0ee8\u0ee9\u0005f\u0000\u0000\u0ee9\u0eeb\u0005"+
55067 		"\u0123\u0000\u0000\u0eea\u0ee8\u0001\u0000\u0000\u0000\u0eea\u0eeb\u0001"+
55068 		"\u0000\u0000\u0000\u0eeb\u0eec\u0001\u0000\u0000\u0000\u0eec\u0eed\u0005"+
55069 		"`\u0000\u0000\u0eed\u0eee\u0003\u0230\u0118\u0000\u0eee\u022b\u0001\u0000"+
55070 		"\u0000\u0000\u0eef\u0ef8\u0005M\u0000\u0000\u0ef0\u0ef5\u0003\u022e\u0117"+
55071 		"\u0000\u0ef1\u0ef2\u0005%\u0000\u0000\u0ef2\u0ef4\u0003\u022e\u0117\u0000"+
55072 		"\u0ef3\u0ef1\u0001\u0000\u0000\u0000\u0ef4\u0ef7\u0001\u0000\u0000\u0000"+
55073 		"\u0ef5\u0ef3\u0001\u0000\u0000\u0000\u0ef5\u0ef6\u0001\u0000\u0000\u0000"+
55074 		"\u0ef6\u0ef9\u0001\u0000\u0000\u0000\u0ef7\u0ef5\u0001\u0000\u0000\u0000"+
55075 		"\u0ef8\u0ef0\u0001\u0000\u0000\u0000\u0ef8\u0ef9\u0001\u0000\u0000\u0000"+
55076 		"\u0ef9\u022d\u0001\u0000\u0000\u0000\u0efa\u0f00\u0005\u015d\u0000\u0000"+
55077 		"\u0efb\u0f00\u0005\u01d8\u0000\u0000\u0efc\u0f00\u0003\u00d2i\u0000\u0efd"+
55078 		"\u0f00\u0005\u0207\u0000\u0000\u0efe\u0f00\u0005\u01f8\u0000\u0000\u0eff"+
55079 		"\u0efa\u0001\u0000\u0000\u0000\u0eff\u0efb\u0001\u0000\u0000\u0000\u0eff"+
55080 		"\u0efc\u0001\u0000\u0000\u0000\u0eff\u0efd\u0001\u0000\u0000\u0000\u0eff"+
55081 		"\u0efe\u0001\u0000\u0000\u0000\u0f00\u022f\u0001\u0000\u0000\u0000\u0f01"+
55082 		"\u0f03\u0005}\u0000\u0000\u0f02\u0f01\u0001\u0000\u0000\u0000\u0f02\u0f03"+
55083 		"\u0001\u0000\u0000\u0000\u0f03\u0f04\u0001\u0000\u0000\u0000\u0f04\u0f06"+
55084 		"\u0003\u0220\u0110\u0000\u0f05\u0f07\u0005\u0105\u0000\u0000\u0f06\u0f05"+
55085 		"\u0001\u0000\u0000\u0000\u0f06\u0f07\u0001\u0000\u0000\u0000\u0f07\u0f25"+
55086 		"\u0001\u0000\u0000\u0000\u0f08\u0f09\u0005\u0150\u0000\u0000\u0f09\u0f0d"+
55087 		"\u0005\u00aa\u0000\u0000\u0f0a\u0f0b\u0003L&\u0000\u0f0b\u0f0c\u0005\u0014"+
55088 		"\u0000\u0000\u0f0c\u0f0e\u0001\u0000\u0000\u0000\u0f0d\u0f0a\u0001\u0000"+
55089 		"\u0000\u0000\u0f0d\u0f0e\u0001\u0000\u0000\u0000\u0f0e\u0f12\u0001\u0000"+
55090 		"\u0000\u0000\u0f0f\u0f10\u0003L&\u0000\u0f10\u0f11\u0005\u0014\u0000\u0000"+
55091 		"\u0f11\u0f13\u0001\u0000\u0000\u0000\u0f12\u0f0f\u0001\u0000\u0000\u0000"+
55092 		"\u0f12\u0f13\u0001\u0000\u0000\u0000\u0f13\u0f14\u0001\u0000\u0000\u0000"+
55093 		"\u0f14\u0f25\u0003N\'\u0000\u0f15\u0f16\u0005}\u0000\u0000\u0f16\u0f17"+
55094 		"\u0005\u01ff\u0000\u0000\u0f17\u0f18\u0005M\u0000\u0000\u0f18\u0f1d\u0003"+
55095 		"\u0232\u0119\u0000\u0f19\u0f1a\u0005%\u0000\u0000\u0f1a\u0f1c\u0003\u0232"+
55096 		"\u0119\u0000\u0f1b\u0f19\u0001\u0000\u0000\u0000\u0f1c\u0f1f\u0001\u0000"+
55097 		"\u0000\u0000\u0f1d\u0f1b\u0001\u0000\u0000\u0000\u0f1d\u0f1e\u0001\u0000"+
55098 		"\u0000\u0000\u0f1e\u0f20\u0001\u0000\u0000\u0000\u0f1f\u0f1d\u0001\u0000"+
55099 		"\u0000\u0000\u0f20\u0f22\u0003\u0220\u0110\u0000\u0f21\u0f23\u0005\u0105"+
55100 		"\u0000\u0000\u0f22\u0f21\u0001\u0000\u0000\u0000\u0f22\u0f23\u0001\u0000"+
55101 		"\u0000\u0000\u0f23\u0f25\u0001\u0000\u0000\u0000\u0f24\u0f02\u0001\u0000"+
55102 		"\u0000\u0000\u0f24\u0f08\u0001\u0000\u0000\u0000\u0f24\u0f15\u0001\u0000"+
55103 		"\u0000\u0000\u0f25\u0231\u0001\u0000\u0000\u0000\u0f26\u0f27\u0005\u0200"+
55104 		"\u0000\u0000\u0f27\u0f28\u0005\u0018\u0000\u0000\u0f28\u0f3d\u0003\u001c"+
55105 		"\u000e\u0000\u0f29\u0f2a\u0005\u00ef\u0000\u0000\u0f2a\u0f2b\u0005\u0202"+
55106 		"\u0000\u0000\u0f2b\u0f2c\u0005\u0201\u0000\u0000\u0f2c\u0f31\u0005\u0018"+
55107 		"\u0000\u0000\u0f2d\u0f32\u0005\u0203\u0000\u0000\u0f2e\u0f2f\u0005\u0204"+
55108 		"\u0000\u0000\u0f2f\u0f32\u0005\u0205\u0000\u0000\u0f30\u0f32\u0005\u0206"+
55109 		"\u0000\u0000\u0f31\u0f2d\u0001\u0000\u0000\u0000\u0f31\u0f2e\u0001\u0000"+
55110 		"\u0000\u0000\u0f31\u0f30\u0001\u0000\u0000\u0000\u0f32\u0f3d\u0001\u0000"+
55111 		"\u0000\u0000\u0f33\u0f34\u0005\u0273\u0000\u0000\u0f34\u0f35\u0005\u0018"+
55112 		"\u0000\u0000\u0f35\u0f3d\u0003\u001e\u000f\u0000\u0f36\u0f37\u0005\u0280"+
55113 		"\u0000\u0000\u0f37\u0f38\u0005\u0018\u0000\u0000\u0f38\u0f3d\u0003\u001c"+
55114 		"\u000e\u0000\u0f39\u0f3a\u0005\u0281\u0000\u0000\u0f3a\u0f3b\u0005\u0018"+
55115 		"\u0000\u0000\u0f3b\u0f3d\u0007\u0000\u0000\u0000\u0f3c\u0f26\u0001\u0000"+
55116 		"\u0000\u0000\u0f3c\u0f29\u0001\u0000\u0000\u0000\u0f3c\u0f33\u0001\u0000"+
55117 		"\u0000\u0000\u0f3c\u0f36\u0001\u0000\u0000\u0000\u0f3c\u0f39\u0001\u0000"+
55118 		"\u0000\u0000\u0f3d\u0233\u0001\u0000\u0000\u0000\u0f3e\u0f3f\u0005M\u0000"+
55119 		"\u0000\u0f3f\u0f44\u0003\u0236\u011b\u0000\u0f40\u0f41\u0005%\u0000\u0000"+
55120 		"\u0f41\u0f43\u0003\u0236\u011b\u0000\u0f42\u0f40\u0001\u0000\u0000\u0000"+
55121 		"\u0f43\u0f46\u0001\u0000\u0000\u0000\u0f44\u0f42\u0001\u0000\u0000\u0000"+
55122 		"\u0f44\u0f45\u0001\u0000\u0000\u0000\u0f45\u0f48\u0001\u0000\u0000\u0000"+
55123 		"\u0f46\u0f44\u0001\u0000\u0000\u0000\u0f47\u0f3e\u0001\u0000\u0000\u0000"+
55124 		"\u0f47\u0f48\u0001\u0000\u0000\u0000\u0f48\u0f49\u0001\u0000\u0000\u0000"+
55125 		"\u0f49\u0f4b\u0005`\u0000\u0000\u0f4a\u0f4c\u0003\u0238\u011c\u0000\u0f4b"+
55126 		"\u0f4a\u0001\u0000\u0000\u0000\u0f4b\u0f4c\u0001\u0000\u0000\u0000\u0f4c"+
55127 		"\u0f4d\u0001\u0000\u0000\u0000\u0f4d\u0f51\u0003\u02bc\u015e\u0000\u0f4e"+
55128 		"\u0f4f\u0005M\u0000\u0000\u0f4f\u0f50\u0005\u00e6\u0000\u0000\u0f50\u0f52"+
55129 		"\u0005\u00e9\u0000\u0000\u0f51\u0f4e\u0001\u0000\u0000\u0000\u0f51\u0f52"+
55130 		"\u0001\u0000\u0000\u0000\u0f52\u0235\u0001\u0000\u0000\u0000\u0f53\u0f54"+
55131 		"\u00073\u0000\u0000\u0f54\u0237\u0001\u0000\u0000\u0000\u0f55\u0f56\u0005"+
55132 		"M\u0000\u0000\u0f56\u0f5b\u0003\u023a\u011d\u0000\u0f57\u0f58\u0005%\u0000"+
55133 		"\u0000\u0f58\u0f5a\u0003\u023a\u011d\u0000\u0f59\u0f57\u0001\u0000\u0000"+
55134 		"\u0000\u0f5a\u0f5d\u0001\u0000\u0000\u0000\u0f5b\u0f59\u0001\u0000\u0000"+
55135 		"\u0000\u0f5b\u0f5c\u0001\u0000\u0000\u0000\u0f5c\u0239\u0001\u0000\u0000"+
55136 		"\u0000\u0f5d\u0f5b\u0001\u0000\u0000\u0000\u0f5e\u0f6a\u0003N\'\u0000"+
55137 		"\u0f5f\u0f60\u0005\u001f\u0000\u0000\u0f60\u0f65\u0003H$\u0000\u0f61\u0f62"+
55138 		"\u0005%\u0000\u0000\u0f62\u0f64\u0003H$\u0000\u0f63\u0f61\u0001\u0000"+
55139 		"\u0000\u0000\u0f64\u0f67\u0001\u0000\u0000\u0000\u0f65\u0f63\u0001\u0000"+
55140 		"\u0000\u0000\u0f65\u0f66\u0001\u0000\u0000\u0000\u0f66\u0f68\u0001\u0000"+
55141 		"\u0000\u0000\u0f67\u0f65\u0001\u0000\u0000\u0000\u0f68\u0f69\u0005 \u0000"+
55142 		"\u0000\u0f69\u0f6b\u0001\u0000\u0000\u0000\u0f6a\u0f5f\u0001\u0000\u0000"+
55143 		"\u0000\u0f6a\u0f6b\u0001\u0000\u0000\u0000\u0f6b\u0f6c\u0001\u0000\u0000"+
55144 		"\u0000\u0f6c\u0f6d\u0005`\u0000\u0000\u0f6d\u0f6e\u0005\u001f\u0000\u0000"+
55145 		"\u0f6e\u0f6f\u0003\u02bc\u015e\u0000\u0f6f\u0f70\u0005 \u0000\u0000\u0f70"+
55146 		"\u023b\u0001\u0000\u0000\u0000\u0f71\u0f72\u0005M\u0000\u0000\u0f72\u0f73"+
55147 		"\u0003\u023e\u011f\u0000\u0f73\u0f74\u0005%\u0000\u0000\u0f74\u0f75\u0003"+
55148 		"\u023e\u011f\u0000\u0f75\u0f77\u0001\u0000\u0000\u0000\u0f76\u0f71\u0001"+
55149 		"\u0000\u0000\u0000\u0f76\u0f77\u0001\u0000\u0000\u0000\u0f77\u0f7c\u0001"+
55150 		"\u0000\u0000\u0000\u0f78\u0f7d\u0005f\u0000\u0000\u0f79\u0f7d\u0005\u0209"+
55151 		"\u0000\u0000\u0f7a\u0f7b\u0005\u020a\u0000\u0000\u0f7b\u0f7d\u0005\u00cf"+
55152 		"\u0000\u0000\u0f7c\u0f78\u0001\u0000\u0000\u0000\u0f7c\u0f79\u0001\u0000"+
55153 		"\u0000\u0000\u0f7c\u0f7a\u0001\u0000\u0000\u0000\u0f7d\u0f7f\u0001\u0000"+
55154 		"\u0000\u0000\u0f7e\u0f80\u0005/\u0000\u0000\u0f7f\u0f7e\u0001\u0000\u0000"+
55155 		"\u0000\u0f7f\u0f80\u0001\u0000\u0000\u0000\u0f80\u0f82\u0001\u0000\u0000"+
55156 		"\u0000\u0f81\u0f83\u0005%\u0000\u0000\u0f82\u0f81\u0001\u0000\u0000\u0000"+
55157 		"\u0f82\u0f83\u0001\u0000\u0000\u0000\u0f83\u0f85\u0001\u0000\u0000\u0000"+
55158 		"\u0f84\u0f86\u00050\u0000\u0000\u0f85\u0f84\u0001\u0000\u0000\u0000\u0f85"+
55159 		"\u0f86\u0001\u0000\u0000\u0000\u0f86\u0f88\u0001\u0000\u0000\u0000\u0f87"+
55160 		"\u0f89\u0005%\u0000\u0000\u0f88\u0f87\u0001\u0000\u0000\u0000\u0f88\u0f89"+
55161 		"\u0001\u0000\u0000\u0000\u0f89\u0f8b\u0001\u0000\u0000\u0000\u0f8a\u0f8c"+
55162 		"\u00051\u0000\u0000\u0f8b\u0f8a\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0001"+
55163 		"\u0000\u0000\u0000\u0f8c\u0f8e\u0001\u0000\u0000\u0000\u0f8d\u0f8f\u0005"+
55164 		"%\u0000\u0000\u0f8e\u0f8d\u0001\u0000\u0000\u0000\u0f8e\u0f8f\u0001\u0000"+
55165 		"\u0000\u0000\u0f8f\u0f92\u0001\u0000\u0000\u0000\u0f90\u0f91\u0005M\u0000"+
55166 		"\u0000\u0f91\u0f93\u0005\u020b\u0000\u0000\u0f92\u0f90\u0001\u0000\u0000"+
55167 		"\u0000\u0f92\u0f93\u0001\u0000\u0000\u0000\u0f93\u0f97\u0001\u0000\u0000"+
55168 		"\u0000\u0f94\u0f95\u0005k\u0000\u0000\u0f95\u0f96\u0005f\u0000\u0000\u0f96"+
55169 		"\u0f98\u0005\u0123\u0000\u0000\u0f97\u0f94\u0001\u0000\u0000\u0000\u0f97"+
55170 		"\u0f98\u0001\u0000\u0000\u0000\u0f98\u0f99\u0001\u0000\u0000\u0000\u0f99"+
55171 		"\u0f9e\u0005`\u0000\u0000\u0f9a\u0f9f\u0003\u0220\u0110\u0000\u0f9b\u0f9c"+
55172 		"\u0005\u0150\u0000\u0000\u0f9c\u0f9d\u0005\u00aa\u0000\u0000\u0f9d\u0f9f"+
55173 		"\u0003\u0240\u0120\u0000\u0f9e\u0f9a\u0001\u0000\u0000\u0000\u0f9e\u0f9b"+
55174 		"\u0001\u0000\u0000\u0000\u0f9f\u023d\u0001\u0000\u0000\u0000\u0fa0\u0fa6"+
55175 		"\u0005\u015d\u0000\u0000\u0fa1\u0fa6\u0003\u00d2i\u0000\u0fa2\u0fa6\u0005"+
55176 		"\u0207\u0000\u0000\u0fa3\u0fa6\u0005\u01f8\u0000\u0000\u0fa4\u0fa6\u0001"+
55177 		"\u0000\u0000\u0000\u0fa5\u0fa0\u0001\u0000\u0000\u0000\u0fa5\u0fa1\u0001"+
55178 		"\u0000\u0000\u0000\u0fa5\u0fa2\u0001\u0000\u0000\u0000\u0fa5\u0fa3\u0001"+
55179 		"\u0000\u0000\u0000\u0fa5\u0fa4\u0001\u0000\u0000\u0000\u0fa6\u023f\u0001"+
55180 		"\u0000\u0000\u0000\u0fa7\u0fa8\u0003N\'\u0000\u0fa8\u0fa9\u0005\u0014"+
55181 		"\u0000\u0000\u0fa9\u0faa\u0003N\'\u0000\u0faa\u0fab\u0005\u0014\u0000"+
55182 		"\u0000\u0fab\u0fac\u0003N\'\u0000\u0fac\u0241\u0001\u0000\u0000\u0000"+
55183 		"\u0fad\u0fb3\u0003@ \u0000\u0fae\u0fb3\u0003:\u001d\u0000\u0faf\u0fb0"+
55184 		"\u0005r\u0000\u0000\u0fb0\u0fb3\u0005\u013c\u0000\u0000\u0fb1\u0fb3\u0005"+
55185 		"\u00cc\u0000\u0000\u0fb2\u0fad\u0001\u0000\u0000\u0000\u0fb2\u0fae\u0001"+
55186 		"\u0000\u0000\u0000\u0fb2\u0faf\u0001\u0000\u0000\u0000\u0fb2\u0fb1\u0001"+
55187 		"\u0000\u0000\u0000\u0fb3\u0243\u0001\u0000\u0000\u0000\u0fb4\u0fb5\u0005"+
55188 		"`\u0000\u0000\u0fb5\u0fd1\u0003\u0094J\u0000\u0fb6\u0fb7\u00074\u0000"+
55189 		"\u0000\u0fb7\u0fb8\u0005M\u0000\u0000\u0fb8\u0fd1\u0003b1\u0000\u0fb9"+
55190 		"\u0fba\u0005\u020c\u0000\u0000\u0fba\u0fbb\u0005w\u0000\u0000\u0fbb\u0fd1"+
55191 		"\u0003b1\u0000\u0fbc\u0fbe\u0005\u020f\u0000\u0000\u0fbd\u0fbf\u0003b"+
55192 		"1\u0000\u0fbe\u0fbd\u0001\u0000\u0000\u0000\u0fbe\u0fbf\u0001\u0000\u0000"+
55193 		"\u0000\u0fbf\u0fd1\u0001\u0000\u0000\u0000\u0fc0\u0fc1\u0005\u00e8\u0000"+
55194 		"\u0000\u0fc1\u0fd1\u0005\u020f\u0000\u0000\u0fc2\u0fc4\u0005\u0210\u0000"+
55195 		"\u0000\u0fc3\u0fc5\u0003b1\u0000\u0fc4\u0fc3\u0001\u0000\u0000\u0000\u0fc4"+
55196 		"\u0fc5\u0001\u0000\u0000\u0000\u0fc5\u0fd1\u0001\u0000\u0000\u0000\u0fc6"+
55197 		"\u0fc7\u0005\u00e8\u0000\u0000\u0fc7\u0fd1\u0005\u0210\u0000\u0000\u0fc8"+
55198 		"\u0fc9\u0005\u020e\u0000\u0000\u0fc9\u0fd1\u0003b1\u0000\u0fca\u0fcb\u0005"+
55199 		"\u00e8\u0000\u0000\u0fcb\u0fd1\u0005\u020e\u0000\u0000\u0fcc\u0fce\u0005"+
55200 		"\u00e8\u0000\u0000\u0fcd\u0fcc\u0001\u0000\u0000\u0000\u0fcd\u0fce\u0001"+
55201 		"\u0000\u0000\u0000\u0fce\u0fcf\u0001\u0000\u0000\u0000\u0fcf\u0fd1\u0005"+
55202 		"\u020d\u0000\u0000\u0fd0\u0fb4\u0001\u0000\u0000\u0000\u0fd0\u0fb6\u0001"+
55203 		"\u0000\u0000\u0000\u0fd0\u0fb9\u0001\u0000\u0000\u0000\u0fd0\u0fbc\u0001"+
55204 		"\u0000\u0000\u0000\u0fd0\u0fc0\u0001\u0000\u0000\u0000\u0fd0\u0fc2\u0001"+
55205 		"\u0000\u0000\u0000\u0fd0\u0fc6\u0001\u0000\u0000\u0000\u0fd0\u0fc8\u0001"+
55206 		"\u0000\u0000\u0000\u0fd0\u0fca\u0001\u0000\u0000\u0000\u0fd0\u0fcd\u0001"+
55207 		"\u0000\u0000\u0000\u0fd1\u0245\u0001\u0000\u0000\u0000\u0fd2\u0fd3\u0005"+
55208 		"\u0218\u0000\u0000\u0fd3\u0fd5\u0003R)\u0000\u0fd4\u0fd2\u0001\u0000\u0000"+
55209 		"\u0000\u0fd4\u0fd5\u0001\u0000\u0000\u0000\u0fd5\u0fd8\u0001\u0000\u0000"+
55210 		"\u0000\u0fd6\u0fd7\u0005_\u0000\u0000\u0fd7\u0fd9\u0003\u0248\u0124\u0000"+
55211 		"\u0fd8\u0fd6\u0001\u0000\u0000\u0000\u0fd8\u0fd9\u0001\u0000\u0000\u0000"+
55212 		"\u0fd9\u0fe6\u0001\u0000\u0000\u0000\u0fda\u0fdb\u0005M\u0000\u0000\u0fdb"+
55213 		"\u0fdc\u0005\u001f\u0000\u0000\u0fdc\u0fe1\u0003\u024e\u0127\u0000\u0fdd"+
55214 		"\u0fde\u0005%\u0000\u0000\u0fde\u0fe0\u0003\u024e\u0127\u0000\u0fdf\u0fdd"+
55215 		"\u0001\u0000\u0000\u0000\u0fe0\u0fe3\u0001\u0000\u0000\u0000\u0fe1\u0fdf"+
55216 		"\u0001\u0000\u0000\u0000\u0fe1\u0fe2\u0001\u0000\u0000\u0000\u0fe2\u0fe4"+
55217 		"\u0001\u0000\u0000\u0000\u0fe3\u0fe1\u0001\u0000\u0000\u0000\u0fe4\u0fe5"+
55218 		"\u0005 \u0000\u0000\u0fe5\u0fe7\u0001\u0000\u0000\u0000\u0fe6\u0fda\u0001"+
55219 		"\u0000\u0000\u0000\u0fe6\u0fe7\u0001\u0000\u0000\u0000\u0fe7\u0ff1\u0001"+
55220 		"\u0000\u0000\u0000\u0fe8\u0fef\u0005a\u0000\u0000\u0fe9\u0fea\u00034\u001a"+
55221 		"\u0000\u0fea\u0feb\u0005\u001f\u0000\u0000\u0feb\u0fec\u0003H$\u0000\u0fec"+
55222 		"\u0fed\u0005 \u0000\u0000\u0fed\u0ff0\u0001\u0000\u0000\u0000\u0fee\u0ff0"+
55223 		"\u0003N\'\u0000\u0fef\u0fe9\u0001\u0000\u0000\u0000\u0fef\u0fee\u0001"+
55224 		"\u0000\u0000\u0000\u0ff0\u0ff2\u0001\u0000\u0000\u0000\u0ff1\u0fe8\u0001"+
55225 		"\u0000\u0000\u0000\u0ff1\u0ff2\u0001\u0000\u0000\u0000\u0ff2\u0ff8\u0001"+
55226 		"\u0000\u0000\u0000\u0ff3\u0ff6\u0005\u019a\u0000\u0000\u0ff4\u0ff7\u0003"+
55227 		"N\'\u0000\u0ff5\u0ff7\u0003\u001c\u000e\u0000\u0ff6\u0ff4\u0001\u0000"+
55228 		"\u0000\u0000\u0ff6\u0ff5\u0001\u0000\u0000\u0000\u0ff7\u0ff9\u0001\u0000"+
55229 		"\u0000\u0000\u0ff8\u0ff3\u0001\u0000\u0000\u0000\u0ff8\u0ff9\u0001\u0000"+
55230 		"\u0000\u0000\u0ff9\u0247\u0001\u0000\u0000\u0000\u0ffa\u0fff\u0003\u024a"+
55231 		"\u0125\u0000\u0ffb\u0ffc\u0005h\u0000\u0000\u0ffc\u0ffe\u0003\u024a\u0125"+
55232 		"\u0000\u0ffd\u0ffb\u0001\u0000\u0000\u0000\u0ffe\u1001\u0001\u0000\u0000"+
55233 		"\u0000\u0fff\u0ffd\u0001\u0000\u0000\u0000\u0fff\u1000\u0001\u0000\u0000"+
55234 		"\u0000\u1000\u0249\u0001\u0000\u0000\u0000\u1001\u0fff\u0001\u0000\u0000"+
55235 		"\u0000\u1002\u1003\u0003H$\u0000\u1003\u1004\u0005q\u0000\u0000\u1004"+
55236 		"\u1005\u0005\u001f\u0000\u0000\u1005\u100a\u0003b1\u0000\u1006\u1007\u0005"+
55237 		"%\u0000\u0000\u1007\u1009\u0003b1\u0000\u1008\u1006\u0001\u0000\u0000"+
55238 		"\u0000\u1009\u100c\u0001\u0000\u0000\u0000\u100a\u1008\u0001\u0000\u0000"+
55239 		"\u0000\u100a\u100b\u0001\u0000\u0000\u0000\u100b\u100d\u0001\u0000\u0000"+
55240 		"\u0000\u100c\u100a\u0001\u0000\u0000\u0000\u100d\u100e\u0005 \u0000\u0000"+
55241 		"\u100e\u1014\u0001\u0000\u0000\u0000\u100f\u1010\u0003H$\u0000\u1010\u1011"+
55242 		"\u0003l6\u0000\u1011\u1012\u0003b1\u0000\u1012\u1014\u0001\u0000\u0000"+
55243 		"\u0000\u1013\u1002\u0001\u0000\u0000\u0000\u1013\u100f\u0001\u0000\u0000"+
55244 		"\u0000\u1014\u024b\u0001\u0000\u0000\u0000\u1015\u101c\u0005\u0121\u0000"+
55245 		"\u0000\u1016\u1017\u0005\u00dd\u0000\u0000\u1017\u101a\u0005\u0018\u0000"+
55246 		"\u0000\u1018\u101b\u0005r\u0000\u0000\u1019\u101b\u0003b1\u0000\u101a"+
55247 		"\u1018\u0001\u0000\u0000\u0000\u101a\u1019\u0001\u0000\u0000\u0000\u101b"+
55248 		"\u101d\u0001\u0000\u0000\u0000\u101c\u1016\u0001\u0000\u0000\u0000\u101c"+
55249 		"\u101d\u0001\u0000\u0000\u0000\u101d\u102a\u0001\u0000\u0000\u0000\u101e"+
55250 		"\u101f\u0005M\u0000\u0000\u101f\u1020\u0005\u001f\u0000\u0000\u1020\u1025"+
55251 		"\u0003\u024e\u0127\u0000\u1021\u1022\u0005%\u0000\u0000\u1022\u1024\u0003"+
55252 		"\u024e\u0127\u0000\u1023\u1021\u0001\u0000\u0000\u0000\u1024\u1027\u0001"+
55253 		"\u0000\u0000\u0000\u1025\u1023\u0001\u0000\u0000\u0000\u1025\u1026\u0001"+
55254 		"\u0000\u0000\u0000\u1026\u1028\u0001\u0000\u0000\u0000\u1027\u1025\u0001"+
55255 		"\u0000\u0000\u0000\u1028\u1029\u0005 \u0000\u0000\u1029\u102b\u0001\u0000"+
55256 		"\u0000\u0000\u102a\u101e\u0001\u0000\u0000\u0000\u102a\u102b\u0001\u0000"+
55257 		"\u0000\u0000\u102b\u1054\u0001\u0000\u0000\u0000\u102c\u1054\u0005\u009d"+
55258 		"\u0000\u0000\u102d\u1031\u0005\u0214\u0000\u0000\u102e\u102f\u0005\u00dd"+
55259 		"\u0000\u0000\u102f\u1030\u0005\u0018\u0000\u0000\u1030\u1032\u0003b1\u0000"+
55260 		"\u1031\u102e\u0001\u0000\u0000\u0000\u1031\u1032\u0001\u0000\u0000\u0000"+
55261 		"\u1032\u1038\u0001\u0000\u0000\u0000\u1033\u1034\u0005M\u0000\u0000\u1034"+
55262 		"\u1035\u0005\u001f\u0000\u0000\u1035\u1036\u0003\u0252\u0129\u0000\u1036"+
55263 		"\u1037\u0005 \u0000\u0000\u1037\u1039\u0001\u0000\u0000\u0000\u1038\u1033"+
55264 		"\u0001\u0000\u0000\u0000\u1038\u1039\u0001\u0000\u0000\u0000\u1039\u1054"+
55265 		"\u0001\u0000\u0000\u0000\u103a\u103b\u0005:\u0000\u0000\u103b\u103c\u0005"+
55266 		"\u001f\u0000\u0000\u103c\u103d\u0003\u0254\u012a\u0000\u103d\u103e\u0005"+
55267 		"%\u0000\u0000\u103e\u103f\u0003\u0254\u012a\u0000\u103f\u1040\u0001\u0000"+
55268 		"\u0000\u0000\u1040\u1041\u0005 \u0000\u0000\u1041\u1054\u0001\u0000\u0000"+
55269 		"\u0000\u1042\u104f\u0005\u0215\u0000\u0000\u1043\u1044\u0005M\u0000\u0000"+
55270 		"\u1044\u1045\u0005\u001f\u0000\u0000\u1045\u104a\u0003\u0256\u012b\u0000"+
55271 		"\u1046\u1047\u0005%\u0000\u0000\u1047\u1049\u0003\u0256\u012b\u0000\u1048"+
55272 		"\u1046\u0001\u0000\u0000\u0000\u1049\u104c\u0001\u0000\u0000\u0000\u104a"+
55273 		"\u1048\u0001\u0000\u0000\u0000\u104a\u104b\u0001\u0000\u0000\u0000\u104b"+
55274 		"\u104d\u0001\u0000\u0000\u0000\u104c\u104a\u0001\u0000\u0000\u0000\u104d"+
55275 		"\u104e\u0005 \u0000\u0000\u104e\u1050\u0001\u0000\u0000\u0000\u104f\u1043"+
55276 		"\u0001\u0000\u0000\u0000\u104f\u1050\u0001\u0000\u0000\u0000\u1050\u1054"+
55277 		"\u0001\u0000\u0000\u0000\u1051\u1054\u0005\u0216\u0000\u0000\u1052\u1054"+
55278 		"\u0005\u0217\u0000\u0000\u1053\u1015\u0001\u0000\u0000\u0000\u1053\u102c"+
55279 		"\u0001\u0000\u0000\u0000\u1053\u102d\u0001\u0000\u0000\u0000\u1053\u103a"+
55280 		"\u0001\u0000\u0000\u0000\u1053\u1042\u0001\u0000\u0000\u0000\u1053\u1051"+
55281 		"\u0001\u0000\u0000\u0000\u1053\u1052\u0001\u0000\u0000\u0000\u1054\u024d"+
55282 		"\u0001\u0000\u0000\u0000\u1055\u1056\u0005\u0198\u0000\u0000\u1056\u1057"+
55283 		"\u0005\u0018\u0000\u0000\u1057\u1099\u0007\u0000\u0000\u0000\u1058\u1059"+
55284 		"\u0005\u0108\u0000\u0000\u1059\u105a\u0005\u0018\u0000\u0000\u105a\u1099"+
55285 		"\u0003b1\u0000\u105b\u105c\u0005\u0192\u0000\u0000\u105c\u105d\u0005\u0018"+
55286 		"\u0000\u0000\u105d\u1099\u0007\u0000\u0000\u0000\u105e\u105f\u0005\u0193"+
55287 		"\u0000\u0000\u105f\u1060\u0005\u0018\u0000\u0000\u1060\u1099\u0007\u0000"+
55288 		"\u0000\u0000\u1061\u1062\u0005\u018e\u0000\u0000\u1062\u1063\u0005\u0018"+
55289 		"\u0000\u0000\u1063\u1099\u0007\u0000\u0000\u0000\u1064\u1065\u0005\u018d"+
55290 		"\u0000\u0000\u1065\u1066\u0005\u0018\u0000\u0000\u1066\u1099\u0007\u0000"+
55291 		"\u0000\u0000\u1067\u1068\u0005\u01a4\u0000\u0000\u1068\u1069\u0005\u0018"+
55292 		"\u0000\u0000\u1069\u1099\u0007\u0000\u0000\u0000\u106a\u106b\u0005\u0118"+
55293 		"\u0000\u0000\u106b\u1071\u0005\u0018\u0000\u0000\u106c\u106e\u0005a\u0000"+
55294 		"\u0000\u106d\u106f\u0003\u00c6c\u0000\u106e\u106d\u0001\u0000\u0000\u0000"+
55295 		"\u106e\u106f\u0001\u0000\u0000\u0000\u106f\u1072\u0001\u0000\u0000\u0000"+
55296 		"\u1070\u1072\u0005b\u0000\u0000\u1071\u106c\u0001\u0000\u0000\u0000\u1071"+
55297 		"\u1070\u0001\u0000\u0000\u0000\u1072\u1099\u0001\u0000\u0000\u0000\u1073"+
55298 		"\u1074\u0005\u0124\u0000\u0000\u1074\u1075\u0005\u0018\u0000\u0000\u1075"+
55299 		"\u1099\u0007\u0000\u0000\u0000\u1076\u1077\u0005\u0195\u0000\u0000\u1077"+
55300 		"\u1078\u0005\u0018\u0000\u0000\u1078\u107a\u0003b1\u0000\u1079\u107b\u0005"+
55301 		"\u00fe\u0000\u0000\u107a\u1079\u0001\u0000\u0000\u0000\u107a\u107b\u0001"+
55302 		"\u0000\u0000\u0000\u107b\u1099\u0001\u0000\u0000\u0000\u107c\u107d\u0005"+
55303 		"\u017e\u0000\u0000\u107d\u107e\u0005\u0018\u0000\u0000\u107e\u1099\u0007"+
55304 		"\u0000\u0000\u0000\u107f\u1080\u0005\u017d\u0000\u0000\u1080\u1081\u0005"+
55305 		"\u0018\u0000\u0000\u1081\u1099\u0007\u0000\u0000\u0000\u1082\u1083\u0005"+
55306 		"\u01da\u0000\u0000\u1083\u1084\u0005\u0018\u0000\u0000\u1084\u1099\u0007"+
55307 		"\u0000\u0000\u0000\u1085\u1086\u0005\u0113\u0000\u0000\u1086\u1087\u0005"+
55308 		"\u0018\u0000\u0000\u1087\u1099\u0003b1\u0000\u1088\u1089\u0005\u0186\u0000"+
55309 		"\u0000\u1089\u108a\u0005\u0018\u0000\u0000\u108a\u1096\u0007\u0017\u0000"+
55310 		"\u0000\u108b\u108c\u0005a\u0000\u0000\u108c\u108d\u0005\u00de\u0000\u0000"+
55311 		"\u108d\u108e\u0005\u001f\u0000\u0000\u108e\u1093\u0003\u0250\u0128\u0000"+
55312 		"\u108f\u1090\u0005%\u0000\u0000\u1090\u1092\u0003\u0250\u0128\u0000\u1091"+
55313 		"\u108f\u0001\u0000\u0000\u0000\u1092\u1095\u0001\u0000\u0000\u0000\u1093"+
55314 		"\u1091\u0001\u0000\u0000\u0000\u1093\u1094\u0001\u0000\u0000\u0000\u1094"+
55315 		"\u1097\u0001\u0000\u0000\u0000\u1095\u1093\u0001\u0000\u0000\u0000\u1096"+
55316 		"\u108b\u0001\u0000\u0000\u0000\u1096\u1097\u0001\u0000\u0000\u0000\u1097"+
55317 		"\u1099\u0001\u0000\u0000\u0000\u1098\u1055\u0001\u0000\u0000\u0000\u1098"+
55318 		"\u1058\u0001\u0000\u0000\u0000\u1098\u105b\u0001\u0000\u0000\u0000\u1098"+
55319 		"\u105e\u0001\u0000\u0000\u0000\u1098\u1061\u0001\u0000\u0000\u0000\u1098"+
55320 		"\u1064\u0001\u0000\u0000\u0000\u1098\u1067\u0001\u0000\u0000\u0000\u1098"+
55321 		"\u106a\u0001\u0000\u0000\u0000\u1098\u1073\u0001\u0000\u0000\u0000\u1098"+
55322 		"\u1076\u0001\u0000\u0000\u0000\u1098\u107c\u0001\u0000\u0000\u0000\u1098"+
55323 		"\u107f\u0001\u0000\u0000\u0000\u1098\u1082\u0001\u0000\u0000\u0000\u1098"+
55324 		"\u1085\u0001\u0000\u0000\u0000\u1098\u1088\u0001\u0000\u0000\u0000\u1099"+
55325 		"\u024f\u0001\u0000\u0000\u0000\u109a\u109d\u0003b1\u0000\u109b\u109c\u0005"+
55326 		"g\u0000\u0000\u109c\u109e\u0003b1\u0000\u109d\u109b\u0001\u0000\u0000"+
55327 		"\u0000\u109d\u109e\u0001\u0000\u0000\u0000\u109e\u0251\u0001\u0000\u0000"+
55328 		"\u0000\u109f\u10a0\u0005\u0212\u0000\u0000\u10a0\u10a1\u0005\u0018\u0000"+
55329 		"\u0000\u10a1\u10a6\u0007\u0000\u0000\u0000\u10a2\u10a3\u0005\u0213\u0000"+
55330 		"\u0000\u10a3\u10a4\u0005\u0018\u0000\u0000\u10a4\u10a6\u0007\u0000\u0000"+
55331 		"\u0000\u10a5\u109f\u0001\u0000\u0000\u0000\u10a5\u10a2\u0001\u0000\u0000"+
55332 		"\u0000\u10a6\u0253\u0001\u0000\u0000\u0000\u10a7\u10a8\u0005\u017e\u0000"+
55333 		"\u0000\u10a8\u10a9\u0005\u0018\u0000\u0000\u10a9\u10bd\u0007\u0000\u0000"+
55334 		"\u0000\u10aa\u10ab\u0005\u017d\u0000\u0000\u10ab\u10ac\u0005\u0018\u0000"+
55335 		"\u0000\u10ac\u10bd\u0007\u0000\u0000\u0000\u10ad\u10ae\u0005\u01da\u0000"+
55336 		"\u0000\u10ae\u10af\u0005\u0018\u0000\u0000\u10af\u10bd\u0007\u0000\u0000"+
55337 		"\u0000\u10b0\u10b1\u0005\u0193\u0000\u0000\u10b1\u10b2\u0005\u0018\u0000"+
55338 		"\u0000\u10b2\u10bd\u0007\u0000\u0000\u0000\u10b3\u10b4\u0005\u018e\u0000"+
55339 		"\u0000\u10b4\u10b5\u0005\u0018\u0000\u0000\u10b5\u10bd\u0007\u0000\u0000"+
55340 		"\u0000\u10b6\u10b7\u0005\u0184\u0000\u0000\u10b7\u10b8\u0005\u0018\u0000"+
55341 		"\u0000\u10b8\u10ba\u0003b1\u0000\u10b9\u10bb\u0005\u00fe\u0000\u0000\u10ba"+
55342 		"\u10b9\u0001\u0000\u0000\u0000\u10ba\u10bb\u0001\u0000\u0000\u0000\u10bb"+
55343 		"\u10bd\u0001\u0000\u0000\u0000\u10bc\u10a7\u0001\u0000\u0000\u0000\u10bc"+
55344 		"\u10aa\u0001\u0000\u0000\u0000\u10bc\u10ad\u0001\u0000\u0000\u0000\u10bc"+
55345 		"\u10b0\u0001\u0000\u0000\u0000\u10bc\u10b3\u0001\u0000\u0000\u0000\u10bc"+
55346 		"\u10b6\u0001\u0000\u0000\u0000\u10bd\u0255\u0001\u0000\u0000\u0000\u10be"+
55347 		"\u10bf\u0005\u0113\u0000\u0000\u10bf\u10c0\u0005\u0018\u0000\u0000\u10c0"+
55348 		"\u10c9\u0003b1\u0000\u10c1\u10c2\u0005\u0195\u0000\u0000\u10c2\u10c3\u0005"+
55349 		"\u0018\u0000\u0000\u10c3\u10c5\u0003b1\u0000\u10c4\u10c6\u0005\u00fe\u0000"+
55350 		"\u0000\u10c5\u10c4\u0001\u0000\u0000\u0000\u10c5\u10c6\u0001\u0000\u0000"+
55351 		"\u0000\u10c6\u10c9\u0001\u0000\u0000\u0000\u10c7\u10c9\u0003\u00c6c\u0000"+
55352 		"\u10c8\u10be\u0001\u0000\u0000\u0000\u10c8\u10c1\u0001\u0000\u0000\u0000"+
55353 		"\u10c8\u10c7\u0001\u0000\u0000\u0000\u10c9\u0257\u0001\u0000\u0000\u0000"+
55354 		"\u10ca\u10cb\u0005\u0221\u0000\u0000\u10cb\u10cc\u0005\u00aa\u0000\u0000"+
55355 		"\u10cc\u10cd\u0005\u0018\u0000\u0000\u10cd\u1101\u00032\u0019\u0000\u10ce"+
55356 		"\u10cf\u0005\u00f6\u0000\u0000\u10cf\u1101\u0003\u00cae\u0000\u10d0\u1101"+
55357 		"\u0003\u0262\u0131\u0000\u10d1\u10d2\u0005:\u0000\u0000\u10d2\u10d7\u0003"+
55358 		"\u0260\u0130\u0000\u10d3\u10d4\u0005%\u0000\u0000\u10d4\u10d6\u0003\u0260"+
55359 		"\u0130\u0000\u10d5\u10d3\u0001\u0000\u0000\u0000\u10d6\u10d9\u0001\u0000"+
55360 		"\u0000\u0000\u10d7\u10d5\u0001\u0000\u0000\u0000\u10d7\u10d8\u0001\u0000"+
55361 		"\u0000\u0000\u10d8\u10dc\u0001\u0000\u0000\u0000\u10d9\u10d7\u0001\u0000"+
55362 		"\u0000\u0000\u10da\u10db\u0005M\u0000\u0000\u10db\u10dd\u0003\u0288\u0144"+
55363 		"\u0000\u10dc\u10da\u0001\u0000\u0000\u0000\u10dc\u10dd\u0001\u0000\u0000"+
55364 		"\u0000\u10dd\u1101\u0001\u0000\u0000\u0000\u10de\u10df\u0005\u0221\u0000"+
55365 		"\u0000\u10df\u10e0\u0005\u001f\u0000\u0000\u10e0\u10e5\u0003\u025c\u012e"+
55366 		"\u0000\u10e1\u10e2\u0005%\u0000\u0000\u10e2\u10e4\u0003\u025c\u012e\u0000"+
55367 		"\u10e3\u10e1\u0001\u0000\u0000\u0000\u10e4\u10e7\u0001\u0000\u0000\u0000"+
55368 		"\u10e5\u10e3\u0001\u0000\u0000\u0000\u10e5\u10e6\u0001\u0000\u0000\u0000"+
55369 		"\u10e6\u10e8\u0001\u0000\u0000\u0000\u10e7\u10e5\u0001\u0000\u0000\u0000"+
55370 		"\u10e8\u10e9\u0005 \u0000\u0000\u10e9\u1101\u0001\u0000\u0000\u0000\u10ea"+
55371 		"\u10eb\u0005\u0221\u0000\u0000\u10eb\u10ec\u0005\u0274\u0000\u0000\u10ec"+
55372 		"\u10ed\u0005\u0018\u0000\u0000\u10ed\u1101\u0005\u02b7\u0000\u0000\u10ee"+
55373 		"\u10ef\u00059\u0000\u0000\u10ef\u10f0\u0005\u0276\u0000\u0000\u10f0\u10f1"+
55374 		"\u0005a\u0000\u0000\u10f1\u10f2\u0005\u013c\u0000\u0000\u10f2\u10fc\u0003"+
55375 		"\u00cae\u0000\u10f3\u10f4\u0005M\u0000\u0000\u10f4\u10f9\u0003\u025a\u012d"+
55376 		"\u0000\u10f5\u10f6\u0005%\u0000\u0000\u10f6\u10f8\u0003\u025a\u012d\u0000"+
55377 		"\u10f7\u10f5\u0001\u0000\u0000\u0000\u10f8\u10fb\u0001\u0000\u0000\u0000"+
55378 		"\u10f9\u10f7\u0001\u0000\u0000\u0000\u10f9\u10fa\u0001\u0000\u0000\u0000"+
55379 		"\u10fa\u10fd\u0001\u0000\u0000\u0000\u10fb\u10f9\u0001\u0000\u0000\u0000"+
55380 		"\u10fc\u10f3\u0001\u0000\u0000\u0000\u10fc\u10fd\u0001\u0000\u0000\u0000"+
55381 		"\u10fd\u1101\u0001\u0000\u0000\u0000\u10fe\u1101\u0005\u0277\u0000\u0000"+
55382 		"\u10ff\u1101\u0005\u0275\u0000\u0000\u1100\u10ca\u0001\u0000\u0000\u0000"+
55383 		"\u1100\u10ce\u0001\u0000\u0000\u0000\u1100\u10d0\u0001\u0000\u0000\u0000";
55384 	private static final String _serializedATNSegment2 =
55385 		"\u1100\u10d1\u0001\u0000\u0000\u0000\u1100\u10de\u0001\u0000\u0000\u0000"+
55386 		"\u1100\u10ea\u0001\u0000\u0000\u0000\u1100\u10ee\u0001\u0000\u0000\u0000"+
55387 		"\u1100\u10fe\u0001\u0000\u0000\u0000\u1100\u10ff\u0001\u0000\u0000\u0000"+
55388 		"\u1101\u0259\u0001\u0000\u0000\u0000\u1102\u1103\u0005\u0270\u0000\u0000"+
55389 		"\u1103\u1104\u0005\u0018\u0000\u0000\u1104\u110f\u00075\u0000\u0000\u1105"+
55390 		"\u1106\u0005\u026e\u0000\u0000\u1106\u110c\u0005\u0018\u0000\u0000\u1107"+
55391 		"\u110d\u0003\u025e\u012f\u0000\u1108\u1109\u0005\u026f\u0000\u0000\u1109"+
55392 		"\u110a\u0005\u0018\u0000\u0000\u110a\u110d\u00032\u0019\u0000\u110b\u110d"+
55393 		"\u00076\u0000\u0000\u110c\u1107\u0001\u0000\u0000\u0000\u110c\u1108\u0001"+
55394 		"\u0000\u0000\u0000\u110c\u110b\u0001\u0000\u0000\u0000\u110d\u110f\u0001"+
55395 		"\u0000\u0000\u0000\u110e\u1102\u0001\u0000\u0000\u0000\u110e\u1105\u0001"+
55396 		"\u0000\u0000\u0000\u110f\u025b\u0001\u0000\u0000\u0000\u1110\u1111\u0005"+
55397 		"\u01e2\u0000\u0000\u1111\u1112\u0005\u0018\u0000\u0000\u1112\u1113\u0005"+
55398 		"\u02b8\u0000\u0000\u1113\u111e\u00077\u0000\u0000\u1114\u1115\u0005\u0261"+
55399 		"\u0000\u0000\u1115\u1116\u0005\u0018\u0000\u0000\u1116\u111e\u0005\u02b7"+
55400 		"\u0000\u0000\u1117\u1118\u0005\u026e\u0000\u0000\u1118\u111b\u0005\u0018"+
55401 		"\u0000\u0000\u1119\u111c\u0005\u02b7\u0000\u0000\u111a\u111c\u0003\u025e"+
55402 		"\u012f\u0000\u111b\u1119\u0001\u0000\u0000\u0000\u111b\u111a\u0001\u0000"+
55403 		"\u0000\u0000\u111c\u111e\u0001\u0000\u0000\u0000\u111d\u1110\u0001\u0000"+
55404 		"\u0000\u0000\u111d\u1114\u0001\u0000\u0000\u0000\u111d\u1117\u0001\u0000"+
55405 		"\u0000\u0000\u111e\u025d\u0001\u0000\u0000\u0000\u111f\u1128\u0005\u02b7"+
55406 		"\u0000\u0000\u1120\u1121\u0005\u026d\u0000\u0000\u1121\u1122\u0005\u001f"+
55407 		"\u0000\u0000\u1122\u1123\u0003\u00cae\u0000\u1123\u1124\u0005\u0018\u0000"+
55408 		"\u0000\u1124\u1125\u0005\u02b7\u0000\u0000\u1125\u1126\u0005 \u0000\u0000"+
55409 		"\u1126\u1128\u0001\u0000\u0000\u0000\u1127\u111f\u0001\u0000\u0000\u0000"+
55410 		"\u1127\u1120\u0001\u0000\u0000\u0000\u1128\u025f\u0001\u0000\u0000\u0000"+
55411 		"\u1129\u1155\u0003\u026a\u0135\u0000\u112a\u1155\u0003\u026c\u0136\u0000"+
55412 		"\u112b\u1155\u0003\u026e\u0137\u0000\u112c\u1155\u0003\u0270\u0138\u0000"+
55413 		"\u112d\u112e\u0005\u01de\u0000\u0000\u112e\u112f\u0005\u0018\u0000\u0000"+
55414 		"\u112f\u1155\u0007+\u0000\u0000\u1130\u1155\u0003\u0274\u013a\u0000\u1131"+
55415 		"\u1132\u0005\u026c\u0000\u0000\u1132\u1155\u0007\u0000\u0000\u0000\u1133"+
55416 		"\u1134\u0005\u015d\u0000\u0000\u1134\u1155\u00078\u0000\u0000\u1135\u1155"+
55417 		"\u00079\u0000\u0000\u1136\u1155\u0007:\u0000\u0000\u1137\u1155\u0007;"+
55418 		"\u0000\u0000\u1138\u1139\u0005\u0281\u0000\u0000\u1139\u113a\u0005\u0018"+
55419 		"\u0000\u0000\u113a\u1155\u0007<\u0000\u0000\u113b\u1155\u0003\u0276\u013b"+
55420 		"\u0000\u113c\u113d\u0005\u0106\u0000\u0000\u113d\u113e\u0005\u001f\u0000"+
55421 		"\u0000\u113e\u113f\u0003\u01ee\u00f7\u0000\u113f\u1140\u0005 \u0000\u0000"+
55422 		"\u1140\u1155\u0001\u0000\u0000\u0000\u1141\u1142\u00053\u0000\u0000\u1142"+
55423 		"\u1143\u0005\u00cc\u0000\u0000\u1143\u1144\u0005:\u0000\u0000\u1144\u1155"+
55424 		"\u0005\u0265\u0000\u0000\u1145\u1146\u0005\u0262\u0000\u0000\u1146\u1155"+
55425 		"\u0007\u0000\u0000\u0000\u1147\u1148\u0005\u01d6\u0000\u0000\u1148\u1155"+
55426 		"\u0007=\u0000\u0000\u1149\u1155\u0003\u0278\u013c\u0000\u114a\u1155\u0003"+
55427 		"\u027e\u013f\u0000\u114b\u1155\u0003\u0284\u0142\u0000\u114c\u1155\u0003"+
55428 		"\u0282\u0141\u0000\u114d\u1155\u0003\u0280\u0140\u0000\u114e\u1155\u0003"+
55429 		"\u0286\u0143\u0000\u114f\u1155\u0003\u0288\u0144\u0000\u1150\u1151\u0005"+
55430 		"\u0260\u0000\u0000\u1151\u1155\u0007\u0000\u0000\u0000\u1152\u1153\u0005"+
55431 		"\u025f\u0000\u0000\u1153\u1155\u0007\u0000\u0000\u0000\u1154\u1129\u0001"+
55432 		"\u0000\u0000\u0000\u1154\u112a\u0001\u0000\u0000\u0000\u1154\u112b\u0001"+
55433 		"\u0000\u0000\u0000\u1154\u112c\u0001\u0000\u0000\u0000\u1154\u112d\u0001"+
55434 		"\u0000\u0000\u0000\u1154\u1130\u0001\u0000\u0000\u0000\u1154\u1131\u0001"+
55435 		"\u0000\u0000\u0000\u1154\u1133\u0001\u0000\u0000\u0000\u1154\u1135\u0001"+
55436 		"\u0000\u0000\u0000\u1154\u1136\u0001\u0000\u0000\u0000\u1154\u1137\u0001"+
55437 		"\u0000\u0000\u0000\u1154\u1138\u0001\u0000\u0000\u0000\u1154\u113b\u0001"+
55438 		"\u0000\u0000\u0000\u1154\u113c\u0001\u0000\u0000\u0000\u1154\u1141\u0001"+
55439 		"\u0000\u0000\u0000\u1154\u1145\u0001\u0000\u0000\u0000\u1154\u1147\u0001"+
55440 		"\u0000\u0000\u0000\u1154\u1149\u0001\u0000\u0000\u0000\u1154\u114a\u0001"+
55441 		"\u0000\u0000\u0000\u1154\u114b\u0001\u0000\u0000\u0000\u1154\u114c\u0001"+
55442 		"\u0000\u0000\u0000\u1154\u114d\u0001\u0000\u0000\u0000\u1154\u114e\u0001"+
55443 		"\u0000\u0000\u0000\u1154\u114f\u0001\u0000\u0000\u0000\u1154\u1150\u0001"+
55444 		"\u0000\u0000\u0000\u1154\u1152\u0001\u0000\u0000\u0000\u1155\u0261\u0001"+
55445 		"\u0000\u0000\u0000\u1156\u115b\u0003\u0268\u0134\u0000\u1157\u115b\u0003"+
55446 		"\u01f0\u00f8\u0000\u1158\u115b\u0003\u0264\u0132\u0000\u1159\u115b\u0003"+
55447 		"\u0266\u0133\u0000\u115a\u1156\u0001\u0000\u0000\u0000\u115a\u1157\u0001"+
55448 		"\u0000\u0000\u0000\u115a\u1158\u0001\u0000\u0000\u0000\u115a\u1159\u0001"+
55449 		"\u0000\u0000\u0000\u115b\u0263\u0001\u0000\u0000\u0000\u115c\u115d\u0005"+
55450 		"9\u0000\u0000\u115d\u115e\u0005\u01eb\u0000\u0000\u115e\u1163\u0003\u00ca"+
55451 		"e\u0000\u115f\u1160\u0005\u01e9\u0000\u0000\u1160\u1164\u0005\u0106\u0000"+
55452 		"\u0000\u1161\u1162\u0005\u01e9\u0000\u0000\u1162\u1164\u0005\u01ea\u0000"+
55453 		"\u0000\u1163\u115f\u0001\u0000\u0000\u0000\u1163\u1161\u0001\u0000\u0000"+
55454 		"\u0000\u1163\u1164\u0001\u0000\u0000\u0000\u1164\u1173\u0001\u0000\u0000"+
55455 		"\u0000\u1165\u1166\u0005\u021c\u0000\u0000\u1166\u1167\u0005\u01eb\u0000"+
55456 		"\u0000\u1167\u1173\u0003\u00cae\u0000\u1168\u1169\u0005\u0221\u0000\u0000"+
55457 		"\u1169\u116a\u0005\u01eb\u0000\u0000\u116a\u116b\u0003\u00cae\u0000\u116b"+
55458 		"\u116c\u0003\u0266\u0133\u0000\u116c\u1173\u0001\u0000\u0000\u0000\u116d"+
55459 		"\u1173\u0005\u009a\u0000\u0000\u116e\u116f\u0005\u00aa\u0000\u0000\u116f"+
55460 		"\u1170\u0005\u0018\u0000\u0000\u1170\u1173\u0003\u00cae\u0000\u1171\u1173"+
55461 		"\u0007>\u0000\u0000\u1172\u115c\u0001\u0000\u0000\u0000\u1172\u1165\u0001"+
55462 		"\u0000\u0000\u0000\u1172\u1168\u0001\u0000\u0000\u0000\u1172\u116d\u0001"+
55463 		"\u0000\u0000\u0000\u1172\u116e\u0001\u0000\u0000\u0000\u1172\u1171\u0001"+
55464 		"\u0000\u0000\u0000\u1173\u0265\u0001\u0000\u0000\u0000\u1174\u1177\u0007"+
55465 		"?\u0000\u0000\u1175\u1177\u0007:\u0000\u0000\u1176\u1174\u0001\u0000\u0000"+
55466 		"\u0000\u1176\u1175\u0001\u0000\u0000\u0000\u1177\u0267\u0001\u0000\u0000"+
55467 		"\u0000\u1178\u1179\u00059\u0000\u0000\u1179\u117a\u0005\u0161\u0000\u0000"+
55468 		"\u117a\u117f\u0003\u01f0\u00f8\u0000\u117b\u117c\u0005%\u0000\u0000\u117c"+
55469 		"\u117e\u0003\u01f0\u00f8\u0000\u117d\u117b\u0001\u0000\u0000\u0000\u117e"+
55470 		"\u1181\u0001\u0000\u0000\u0000\u117f\u117d\u0001\u0000\u0000\u0000\u117f"+
55471 		"\u1180\u0001\u0000\u0000\u0000\u1180\u1185\u0001\u0000\u0000\u0000\u1181"+
55472 		"\u117f\u0001\u0000\u0000\u0000\u1182\u1183\u0005g\u0000\u0000\u1183\u1184"+
55473 		"\u0005\u01eb\u0000\u0000\u1184\u1186\u0003\u00cae\u0000\u1185\u1182\u0001"+
55474 		"\u0000\u0000\u0000\u1185\u1186\u0001\u0000\u0000\u0000\u1186\u1199\u0001"+
55475 		"\u0000\u0000\u0000\u1187\u1188\u00059\u0000\u0000\u1188\u1189\u0005\u0175"+
55476 		"\u0000\u0000\u1189\u118a\u0005\u0161\u0000\u0000\u118a\u118f\u0003\u01f0"+
55477 		"\u00f8\u0000\u118b\u118c\u0005%\u0000\u0000\u118c\u118e\u0003\u01f0\u00f8"+
55478 		"\u0000\u118d\u118b\u0001\u0000\u0000\u0000\u118e\u1191\u0001\u0000\u0000"+
55479 		"\u0000\u118f\u118d\u0001\u0000\u0000\u0000\u118f\u1190\u0001\u0000\u0000"+
55480 		"\u0000\u1190\u1199\u0001\u0000\u0000\u0000\u1191\u118f\u0001\u0000\u0000"+
55481 		"\u0000\u1192\u1193\u0005\u021c\u0000\u0000\u1193\u1194\u0005\u0161\u0000"+
55482 		"\u0000\u1194\u1199\u0005\u02b7\u0000\u0000\u1195\u1196\u0005\u0221\u0000"+
55483 		"\u0000\u1196\u1197\u0005\u0161\u0000\u0000\u1197\u1199\u0003\u01f0\u00f8"+
55484 		"\u0000\u1198\u1178\u0001\u0000\u0000\u0000\u1198\u1187\u0001\u0000\u0000"+
55485 		"\u0000\u1198\u1192\u0001\u0000\u0000\u0000\u1198\u1195\u0001\u0000\u0000"+
55486 		"\u0000\u1199\u0269\u0001\u0000\u0000\u0000\u119a\u119b\u0005\u0222\u0000"+
55487 		"\u0000\u119b\u119c\u0005\u0018\u0000\u0000\u119c\u11a3\u0007\u0000\u0000"+
55488 		"\u0000\u119d\u119e\u0005\u001f\u0000\u0000\u119e\u119f\u0005\u0223\u0000"+
55489 		"\u0000\u119f\u11a0\u0005\u0018\u0000\u0000\u11a0\u11a1\u0003\u00cae\u0000"+
55490 		"\u11a1\u11a2\u0005 \u0000\u0000\u11a2\u11a4\u0001\u0000\u0000\u0000\u11a3"+
55491 		"\u119d\u0001\u0000\u0000\u0000\u11a3\u11a4\u0001\u0000\u0000\u0000\u11a4"+
55492 		"\u026b\u0001\u0000\u0000\u0000\u11a5\u11a6\u0005\u025e\u0000\u0000\u11a6"+
55493 		"\u11ba\u0007\u0000\u0000\u0000\u11a7\u11b1\u0005\u025c\u0000\u0000\u11a8"+
55494 		"\u11b2\u0005b\u0000\u0000\u11a9\u11af\u0005a\u0000\u0000\u11aa\u11ab\u0005"+
55495 		"\u001f\u0000\u0000\u11ab\u11ac\u0005\u025d\u0000\u0000\u11ac\u11ad\u0005"+
55496 		"\u0018\u0000\u0000\u11ad\u11ae\u0007\u0000\u0000\u0000\u11ae\u11b0\u0005"+
55497 		" \u0000\u0000\u11af\u11aa\u0001\u0000\u0000\u0000\u11af\u11b0\u0001\u0000"+
55498 		"\u0000\u0000\u11b0\u11b2\u0001\u0000\u0000\u0000\u11b1\u11a8\u0001\u0000"+
55499 		"\u0000\u0000\u11b1\u11a9\u0001\u0000\u0000\u0000\u11b2\u11ba\u0001\u0000"+
55500 		"\u0000\u0000\u11b3\u11b4\u0005\u025b\u0000\u0000\u11b4\u11ba\u0007\u0000"+
55501 		"\u0000\u0000\u11b5\u11b6\u0005\u025a\u0000\u0000\u11b6\u11ba\u0007\u0000"+
55502 		"\u0000\u0000\u11b7\u11b8\u0005\u0259\u0000\u0000\u11b8\u11ba\u0007\u0000"+
55503 		"\u0000\u0000\u11b9\u11a5\u0001\u0000\u0000\u0000\u11b9\u11a7\u0001\u0000"+
55504 		"\u0000\u0000\u11b9\u11b3\u0001\u0000\u0000\u0000\u11b9\u11b5\u0001\u0000"+
55505 		"\u0000\u0000\u11b9\u11b7\u0001\u0000\u0000\u0000\u11ba\u026d\u0001\u0000"+
55506 		"\u0000\u0000\u11bb\u11bc\u0005\u0257\u0000\u0000\u11bc\u11bd\u0005\u001f"+
55507 		"\u0000\u0000\u11bd\u11be\u0005\u0258\u0000\u0000\u11be\u11bf\u0005\u0018"+
55508 		"\u0000\u0000\u11bf\u11c0\u0007\u0000\u0000\u0000\u11c0\u11c1\u0005 \u0000"+
55509 		"\u0000\u11c1\u026f\u0001\u0000\u0000\u0000\u11c2\u11d6\u0005\u0256\u0000"+
55510 		"\u0000\u11c3\u11c4\u0005\u0018\u0000\u0000\u11c4\u11d7\u0005b\u0000\u0000"+
55511 		"\u11c5\u11c6\u0005\u0018\u0000\u0000\u11c6\u11c8\u0005a\u0000\u0000\u11c7"+
55512 		"\u11c5\u0001\u0000\u0000\u0000\u11c7\u11c8\u0001\u0000\u0000\u0000\u11c8"+
55513 		"\u11d4\u0001\u0000\u0000\u0000\u11c9\u11ca\u0005\u001f\u0000\u0000\u11ca"+
55514 		"\u11cf\u0003\u0272\u0139\u0000\u11cb\u11cc\u0005%\u0000\u0000\u11cc\u11ce"+
55515 		"\u0003\u0272\u0139\u0000\u11cd\u11cb\u0001\u0000\u0000\u0000\u11ce\u11d1"+
55516 		"\u0001\u0000\u0000\u0000\u11cf\u11cd\u0001\u0000\u0000\u0000\u11cf\u11d0"+
55517 		"\u0001\u0000\u0000\u0000\u11d0\u11d2\u0001\u0000\u0000\u0000\u11d1\u11cf"+
55518 		"\u0001\u0000\u0000\u0000\u11d2\u11d3\u0005 \u0000\u0000\u11d3\u11d5\u0001"+
55519 		"\u0000\u0000\u0000\u11d4\u11c9\u0001\u0000\u0000\u0000\u11d4\u11d5\u0001"+
55520 		"\u0000\u0000\u0000\u11d5\u11d7\u0001\u0000\u0000\u0000\u11d6\u11c3\u0001"+
55521 		"\u0000\u0000\u0000\u11d6\u11c7\u0001\u0000\u0000\u0000\u11d7\u0271\u0001"+
55522 		"\u0000\u0000\u0000\u11d8\u11d9\u0005\u0255\u0000\u0000\u11d9\u11da\u0005"+
55523 		"\u0018\u0000\u0000\u11da\u11e0\u0007\u0000\u0000\u0000\u11db\u11dc\u0005"+
55524 		"\u0254\u0000\u0000\u11dc\u11dd\u0005\u0018\u0000\u0000\u11dd\u11de\u0005"+
55525 		"\u02b8\u0000\u0000\u11de\u11e0\u0007@\u0000\u0000\u11df\u11d8\u0001\u0000"+
55526 		"\u0000\u0000\u11df\u11db\u0001\u0000\u0000\u0000\u11e0\u0273\u0001\u0000"+
55527 		"\u0000\u0000\u11e1\u11e2\u0005\u0252\u0000\u0000\u11e2\u11e6\u0007\u0000"+
55528 		"\u0000\u0000\u11e3\u11e4\u0005\u0250\u0000\u0000\u11e4\u11e6\u0007A\u0000"+
55529 		"\u0000\u11e5\u11e1\u0001\u0000\u0000\u0000\u11e5\u11e3\u0001\u0000\u0000"+
55530 		"\u0000\u11e6\u0275\u0001\u0000\u0000\u0000\u11e7\u11e8\u0005\u01ed\u0000"+
55531 		"\u0000\u11e8\u11fb\u0007\u0000\u0000\u0000\u11e9\u11ea\u0005\u01ee\u0000"+
55532 		"\u0000\u11ea\u11fb\u0007\u0000\u0000\u0000\u11eb\u11ec\u0005\u0278\u0000"+
55533 		"\u0000\u11ec\u11ed\u0005\u0018\u0000\u0000\u11ed\u11fb\u0005\u02b7\u0000"+
55534 		"\u0000\u11ee\u11ef\u0005\u0279\u0000\u0000\u11ef\u11f0\u0005\u0018\u0000"+
55535 		"\u0000\u11f0\u11fb\u0005\u02b7\u0000\u0000\u11f1\u11f2\u0005\u027b\u0000"+
55536 		"\u0000\u11f2\u11f3\u0005\u0018\u0000\u0000\u11f3\u11fb\u0007\u0000\u0000"+
55537 		"\u0000\u11f4\u11f5\u0005\u027c\u0000\u0000\u11f5\u11f6\u0005\u0018\u0000"+
55538 		"\u0000\u11f6\u11fb\u0007\u0000\u0000\u0000\u11f7\u11f8\u0005\u027d\u0000"+
55539 		"\u0000\u11f8\u11f9\u0005\u0018\u0000\u0000\u11f9\u11fb\u0005\u02b8\u0000"+
55540 		"\u0000\u11fa\u11e7\u0001\u0000\u0000\u0000\u11fa\u11e9\u0001\u0000\u0000"+
55541 		"\u0000\u11fa\u11eb\u0001\u0000\u0000\u0000\u11fa\u11ee\u0001\u0000\u0000"+
55542 		"\u0000\u11fa\u11f1\u0001\u0000\u0000\u0000\u11fa\u11f4\u0001\u0000\u0000"+
55543 		"\u0000\u11fa\u11f7\u0001\u0000\u0000\u0000\u11fb\u0277\u0001\u0000\u0000"+
55544 		"\u0000\u11fc\u1210\u0005\u024f\u0000\u0000\u11fd\u11fe\u0005\u0018\u0000"+
55545 		"\u0000\u11fe\u1211\u0005b\u0000\u0000\u11ff\u1200\u0005\u0018\u0000\u0000"+
55546 		"\u1200\u1202\u0005a\u0000\u0000\u1201\u11ff\u0001\u0000\u0000\u0000\u1201"+
55547 		"\u1202\u0001\u0000\u0000\u0000\u1202\u120e\u0001\u0000\u0000\u0000\u1203"+
55548 		"\u1204\u0005\u001f\u0000\u0000\u1204\u1209\u0003\u027a\u013d\u0000\u1205"+
55549 		"\u1206\u0005%\u0000\u0000\u1206\u1208\u0003\u027a\u013d\u0000\u1207\u1205"+
55550 		"\u0001\u0000\u0000\u0000\u1208\u120b\u0001\u0000\u0000\u0000\u1209\u1207"+
55551 		"\u0001\u0000\u0000\u0000\u1209\u120a\u0001\u0000\u0000\u0000\u120a\u120c"+
55552 		"\u0001\u0000\u0000\u0000\u120b\u1209\u0001\u0000\u0000\u0000\u120c\u120d"+
55553 		"\u0005 \u0000\u0000\u120d\u120f\u0001\u0000\u0000\u0000\u120e\u1203\u0001"+
55554 		"\u0000\u0000\u0000\u120e\u120f\u0001\u0000\u0000\u0000\u120f\u1211\u0001"+
55555 		"\u0000\u0000\u0000\u1210\u11fd\u0001\u0000\u0000\u0000\u1210\u1201\u0001"+
55556 		"\u0000\u0000\u0000\u1211\u0279\u0001\u0000\u0000\u0000\u1212\u1213\u0005"+
55557 		"\u024e\u0000\u0000\u1213\u1214\u0005\u0018\u0000\u0000\u1214\u123f\u0007"+
55558 		":\u0000\u0000\u1215\u1216\u0005\u024b\u0000\u0000\u1216\u1217\u0005\u0018"+
55559 		"\u0000\u0000\u1217\u1218\u0005\u001f\u0000\u0000\u1218\u1219\u0005\u024d"+
55560 		"\u0000\u0000\u1219\u121a\u0005\u0018\u0000\u0000\u121a\u121b\u0005\u02b8"+
55561 		"\u0000\u0000\u121b\u123f\u0005 \u0000\u0000\u121c\u121d\u0005\u024a\u0000"+
55562 		"\u0000\u121d\u121e\u0005\u0018\u0000\u0000\u121e\u123f\u0005\u02b8\u0000"+
55563 		"\u0000\u121f\u1220\u0005\u0249\u0000\u0000\u1220\u1221\u0005\u0018\u0000"+
55564 		"\u0000\u1221\u123f\u0005\u02b8\u0000\u0000\u1222\u1223\u0005\u0248\u0000"+
55565 		"\u0000\u1223\u1224\u0005\u0018\u0000\u0000\u1224\u123f\u0005\u02b8\u0000"+
55566 		"\u0000\u1225\u1226\u0005\u0247\u0000\u0000\u1226\u1227\u0005\u0018\u0000"+
55567 		"\u0000\u1227\u123f\u0007B\u0000\u0000\u1228\u1229\u0005\u0246\u0000\u0000"+
55568 		"\u1229\u122a\u0005\u0018\u0000\u0000\u122a\u123f\u0007C\u0000\u0000\u122b"+
55569 		"\u122c\u0005\u0245\u0000\u0000\u122c\u122d\u0005\u0018\u0000\u0000\u122d"+
55570 		"\u123f\u0005\u02b8\u0000\u0000\u122e\u122f\u0005\u0244\u0000\u0000\u122f"+
55571 		"\u1230\u0005\u0018\u0000\u0000\u1230\u123f\u0007\u0000\u0000\u0000\u1231"+
55572 		"\u1232\u0005\u0243\u0000\u0000\u1232\u1233\u0005\u0018\u0000\u0000\u1233"+
55573 		"\u1234\u0005\u001f\u0000\u0000\u1234\u1239\u0003\u027c\u013e\u0000\u1235"+
55574 		"\u1236\u0005%\u0000\u0000\u1236\u1238\u0003\u027c\u013e\u0000\u1237\u1235"+
55575 		"\u0001\u0000\u0000\u0000\u1238\u123b\u0001\u0000\u0000\u0000\u1239\u1237"+
55576 		"\u0001\u0000\u0000\u0000\u1239\u123a\u0001\u0000\u0000\u0000\u123a\u123c"+
55577 		"\u0001\u0000\u0000\u0000\u123b\u1239\u0001\u0000\u0000\u0000\u123c\u123d"+
55578 		"\u0005 \u0000\u0000\u123d\u123f\u0001\u0000\u0000\u0000\u123e\u1212\u0001"+
55579 		"\u0000\u0000\u0000\u123e\u1215\u0001\u0000\u0000\u0000\u123e\u121c\u0001"+
55580 		"\u0000\u0000\u0000\u123e\u121f\u0001\u0000\u0000\u0000\u123e\u1222\u0001"+
55581 		"\u0000\u0000\u0000\u123e\u1225\u0001\u0000\u0000\u0000\u123e\u1228\u0001"+
55582 		"\u0000\u0000\u0000\u123e\u122b\u0001\u0000\u0000\u0000\u123e\u122e\u0001"+
55583 		"\u0000\u0000\u0000\u123e\u1231\u0001\u0000\u0000\u0000\u123f\u027b\u0001"+
55584 		"\u0000\u0000\u0000\u1240\u1241\u0005\u0241\u0000\u0000\u1241\u1242\u0005"+
55585 		"\u0018\u0000\u0000\u1242\u1243\u0005\u02b8\u0000\u0000\u1243\u124e\u0007"+
55586 		"D\u0000\u0000\u1244\u1245\u0005\u0242\u0000\u0000\u1245\u1246\u0005\u0018"+
55587 		"\u0000\u0000\u1246\u124e\u0005\u02b8\u0000\u0000\u1247\u1248\u0005\u0240"+
55588 		"\u0000\u0000\u1248\u1249\u0005\u0018\u0000\u0000\u1249\u124e\u0005\u02b8"+
55589 		"\u0000\u0000\u124a\u124b\u0005\u023f\u0000\u0000\u124b\u124c\u0005\u0018"+
55590 		"\u0000\u0000\u124c\u124e\u0005\u02b8\u0000\u0000\u124d\u1240\u0001\u0000"+
55591 		"\u0000\u0000\u124d\u1244\u0001\u0000\u0000\u0000\u124d\u1247\u0001\u0000"+
55592 		"\u0000\u0000\u124d\u124a\u0001\u0000\u0000\u0000\u124e\u027d\u0001\u0000"+
55593 		"\u0000\u0000\u124f\u1250\u0005\u023e\u0000\u0000\u1250\u1256\u0007E\u0000"+
55594 		"\u0000\u1251\u1252\u0005\u023c\u0000\u0000\u1252\u1256\u0007\u0000\u0000"+
55595 		"\u0000\u1253\u1254\u0005\u023a\u0000\u0000\u1254\u1256\u0007F\u0000\u0000"+
55596 		"\u1255\u124f\u0001\u0000\u0000\u0000\u1255\u1251\u0001\u0000\u0000\u0000"+
55597 		"\u1255\u1253\u0001\u0000\u0000\u0000\u1256\u027f\u0001\u0000\u0000\u0000"+
55598 		"\u1257\u1258\u0005\u0239\u0000\u0000\u1258\u126d\u0007\u0000\u0000\u0000"+
55599 		"\u1259\u125a\u0005\u0238\u0000\u0000\u125a\u126d\u0007\u0000\u0000\u0000"+
55600 		"\u125b\u125c\u0005\u0237\u0000\u0000\u125c\u126d\u0007\u0000\u0000\u0000"+
55601 		"\u125d\u125e\u0005\u0236\u0000\u0000\u125e\u126d\u0007\u0000\u0000\u0000"+
55602 		"\u125f\u1260\u0005\u0235\u0000\u0000\u1260\u126d\u0007\u0000\u0000\u0000"+
55603 		"\u1261\u1262\u0005\u0234\u0000\u0000\u1262\u1263\u0005\u0018\u0000\u0000"+
55604 		"\u1263\u126d\u0005\u02b8\u0000\u0000\u1264\u1265\u0005\u0233\u0000\u0000"+
55605 		"\u1265\u126d\u0007\u0000\u0000\u0000\u1266\u1267\u0005\u0232\u0000\u0000"+
55606 		"\u1267\u126d\u0007\u0000\u0000\u0000\u1268\u1269\u0005\u0231\u0000\u0000"+
55607 		"\u1269\u126d\u0007\u0000\u0000\u0000\u126a\u126b\u0005\u0230\u0000\u0000"+
55608 		"\u126b\u126d\u0007\u0000\u0000\u0000\u126c\u1257\u0001\u0000\u0000\u0000"+
55609 		"\u126c\u1259\u0001\u0000\u0000\u0000\u126c\u125b\u0001\u0000\u0000\u0000"+
55610 		"\u126c\u125d\u0001\u0000\u0000\u0000\u126c\u125f\u0001\u0000\u0000\u0000"+
55611 		"\u126c\u1261\u0001\u0000\u0000\u0000\u126c\u1264\u0001\u0000\u0000\u0000"+
55612 		"\u126c\u1266\u0001\u0000\u0000\u0000\u126c\u1268\u0001\u0000\u0000\u0000"+
55613 		"\u126c\u126a\u0001\u0000\u0000\u0000\u126d\u0281\u0001\u0000\u0000\u0000"+
55614 		"\u126e\u126f\u0005\u022f\u0000\u0000\u126f\u1276\u0007\u0000\u0000\u0000"+
55615 		"\u1270\u1271\u0005\u022e\u0000\u0000\u1271\u1276\u0007\u0000\u0000\u0000"+
55616 		"\u1272\u1273\u0005\u022d\u0000\u0000\u1273\u1274\u0005\u0018\u0000\u0000"+
55617 		"\u1274\u1276\u0007\u0000\u0000\u0000\u1275\u126e\u0001\u0000\u0000\u0000"+
55618 		"\u1275\u1270\u0001\u0000\u0000\u0000\u1275\u1272\u0001\u0000\u0000\u0000"+
55619 		"\u1276\u0283\u0001\u0000\u0000\u0000\u1277\u127e\u0005\u022c\u0000\u0000"+
55620 		"\u1278\u127e\u0005\u022b\u0000\u0000\u1279\u127e\u0005\u022a\u0000\u0000"+
55621 		"\u127a\u127e\u0005\u0229\u0000\u0000\u127b\u127c\u0005\u0228\u0000\u0000"+
55622 		"\u127c\u127e\u0007\u0000\u0000\u0000\u127d\u1277\u0001\u0000\u0000\u0000"+
55623 		"\u127d\u1278\u0001\u0000\u0000\u0000\u127d\u1279\u0001\u0000\u0000\u0000"+
55624 		"\u127d\u127a\u0001\u0000\u0000\u0000\u127d\u127b\u0001\u0000\u0000\u0000"+
55625 		"\u127e\u0285\u0001\u0000\u0000\u0000\u127f\u1280\u0005\u0226\u0000\u0000"+
55626 		"\u1280\u1281\u0005\u0018\u0000\u0000\u1281\u1282\u0005\u02b8\u0000\u0000"+
55627 		"\u1282\u1283\u0007G\u0000\u0000\u1283\u0287\u0001\u0000\u0000\u0000\u1284"+
55628 		"\u1285\u0005\u007f\u0000\u0000\u1285\u1286\u0005\u0209\u0000\u0000\u1286"+
55629 		"\u1288\u0005\u02b8\u0000\u0000\u1287\u1289\u0005\u0227\u0000\u0000\u1288"+
55630 		"\u1287\u0001\u0000\u0000\u0000\u1288\u1289\u0001\u0000\u0000\u0000\u1289"+
55631 		"\u128e\u0001\u0000\u0000\u0000\u128a\u128b\u0005\u007f\u0000\u0000\u128b"+
55632 		"\u128e\u0005\u0224\u0000\u0000\u128c\u128e\u0005\u0225\u0000\u0000\u128d"+
55633 		"\u1284\u0001\u0000\u0000\u0000\u128d\u128a\u0001\u0000\u0000\u0000\u128d"+
55634 		"\u128c\u0001\u0000\u0000\u0000\u128e\u0289\u0001\u0000\u0000\u0000\u128f"+
55635 		"\u1290\u0005\u001f\u0000\u0000\u1290\u1295\u0003D\"\u0000\u1291\u1292"+
55636 		"\u0005%\u0000\u0000\u1292\u1294\u0003D\"\u0000\u1293\u1291\u0001\u0000"+
55637 		"\u0000\u0000\u1294\u1297\u0001\u0000\u0000\u0000\u1295\u1293\u0001\u0000"+
55638 		"\u0000\u0000\u1295\u1296\u0001\u0000\u0000\u0000\u1296\u1298\u0001\u0000"+
55639 		"\u0000\u0000\u1297\u1295\u0001\u0000\u0000\u0000\u1298\u1299\u0005 \u0000"+
55640 		"\u0000\u1299\u028b\u0001\u0000\u0000\u0000\u129a\u129b\u0005\u001f\u0000"+
55641 		"\u0000\u129b\u12a0\u0003\u028e\u0147\u0000\u129c\u129d\u0005%\u0000\u0000"+
55642 		"\u129d\u129f\u0003\u028e\u0147\u0000\u129e\u129c\u0001\u0000\u0000\u0000"+
55643 		"\u129f\u12a2\u0001\u0000\u0000\u0000\u12a0\u129e\u0001\u0000\u0000\u0000"+
55644 		"\u12a0\u12a1\u0001\u0000\u0000\u0000\u12a1\u12a3\u0001\u0000\u0000\u0000"+
55645 		"\u12a2\u12a0\u0001\u0000\u0000\u0000\u12a3\u12a4\u0005 \u0000\u0000\u12a4"+
55646 		"\u028d\u0001\u0000\u0000\u0000\u12a5\u12a6\u00059\u0000\u0000\u12a6\u12a7"+
55647 		"\u0005\u015c\u0000\u0000\u12a7\u12ac\u0003D\"\u0000\u12a8\u12a9\u0005"+
55648 		"4\u0000\u0000\u12a9\u12aa\u0005\u015c\u0000\u0000\u12aa\u12ac\u0003D\""+
55649 		"\u0000\u12ab\u12a5\u0001\u0000\u0000\u0000\u12ab\u12a8\u0001\u0000\u0000"+
55650 		"\u0000\u12ac\u028f\u0001\u0000\u0000\u0000\u12ad\u12b5\u00034\u001a\u0000"+
55651 		"\u12ae\u12af\u0005\u0282\u0000\u0000\u12af\u12b5\u0003\u00cae\u0000\u12b0"+
55652 		"\u12b1\u00034\u001a\u0000\u12b1\u12b2\u0005\u0282\u0000\u0000\u12b2\u12b3"+
55653 		"\u0003\u00cae\u0000\u12b3\u12b5\u0001\u0000\u0000\u0000\u12b4\u12ad\u0001"+
55654 		"\u0000\u0000\u0000\u12b4\u12ae\u0001\u0000\u0000\u0000\u12b4\u12b0\u0001"+
55655 		"\u0000\u0000\u0000\u12b5\u0291\u0001\u0000\u0000\u0000\u12b6\u12bc\u0003"+
55656 		"\u00e6s\u0000\u12b7\u12bc\u0003\u00f2y\u0000\u12b8\u12bc\u0003\u030c\u0186"+
55657 		"\u0000\u12b9\u12bc\u0003\u031e\u018f\u0000\u12ba\u12bc\u0003\u0324\u0192"+
55658 		"\u0000\u12bb\u12b6\u0001\u0000\u0000\u0000\u12bb\u12b7\u0001\u0000\u0000"+
55659 		"\u0000\u12bb\u12b8\u0001\u0000\u0000\u0000\u12bb\u12b9\u0001\u0000\u0000"+
55660 		"\u0000\u12bb\u12ba\u0001\u0000\u0000\u0000\u12bc\u0293\u0001\u0000\u0000"+
55661 		"\u0000\u12bd\u12c0\u0003\u0296\u014b\u0000\u12be\u12c0\u0003\u0298\u014c"+
55662 		"\u0000\u12bf\u12bd\u0001\u0000\u0000\u0000\u12bf\u12be\u0001\u0000\u0000"+
55663 		"\u0000\u12c0\u0295\u0001\u0000\u0000\u0000\u12c1\u12c2\u00052\u0000\u0000"+
55664 		"\u12c2\u12c3\u0005;\u0000\u0000\u12c3\u12c5\u0003@ \u0000\u12c4\u12c6"+
55665 		"\u0003P(\u0000\u12c5\u12c4\u0001\u0000\u0000\u0000\u12c5\u12c6\u0001\u0000"+
55666 		"\u0000\u0000\u12c6\u12c7\u0001\u0000\u0000\u0000\u12c7\u12c8\u0003\u029a"+
55667 		"\u014d\u0000\u12c8\u12c9\u0005`\u0000\u0000\u12c9\u12ca\u0003\u02bc\u015e"+
55668 		"\u0000\u12ca\u12cb\u0003\u029c\u014e\u0000\u12cb\u0297\u0001\u0000\u0000"+
55669 		"\u0000\u12cc\u12cd\u00052\u0000\u0000\u12cd\u12ce\u0005\u0168\u0000\u0000"+
55670 		"\u12ce\u12cf\u0005;\u0000\u0000\u12cf\u12d0\u0003@ \u0000\u12d0\u12d1"+
55671 		"\u0005\u00d4\u0000\u0000\u12d1\u12d2\u0005\u001f\u0000\u0000\u12d2\u12d3"+
55672 		"\u0003\u001c\u000e\u0000\u12d3\u12da\u0005 \u0000\u0000\u12d4\u12d5\u0005"+
55673 		"M\u0000\u0000\u12d5\u12d6\u0005\u001f\u0000\u0000\u12d6\u12d7\u0005\u0286"+
55674 		"\u0000\u0000\u12d7\u12d8\u0005\u0018\u0000\u0000\u12d8\u12d9\u0005\u02b9"+
55675 		"\u0000\u0000\u12d9\u12db\u0005 \u0000\u0000\u12da\u12d4\u0001\u0000\u0000"+
55676 		"\u0000\u12da\u12db\u0001\u0000\u0000\u0000\u12db\u12dc\u0001\u0000\u0000"+
55677 		"\u0000\u12dc\u12dd\u0005`\u0000\u0000\u12dd\u12de\u0003\u02bc\u015e\u0000"+
55678 		"\u12de\u0299\u0001\u0000\u0000\u0000\u12df\u12e0\u0005M\u0000\u0000\u12e0"+
55679 		"\u12e1\u0005\u001f\u0000\u0000\u12e1\u12eb\u0003\u019a\u00cd\u0000\u12e2"+
55680 		"\u12e3\u0005%\u0000\u0000\u12e3\u12e8\u0003\u018e\u00c7\u0000\u12e4\u12e5"+
55681 		"\u0005%\u0000\u0000\u12e5\u12e7\u0003\u018e\u00c7\u0000\u12e6\u12e4\u0001"+
55682 		"\u0000\u0000\u0000\u12e7\u12ea\u0001\u0000\u0000\u0000\u12e8\u12e6\u0001"+
55683 		"\u0000\u0000\u0000\u12e8\u12e9\u0001\u0000\u0000\u0000\u12e9\u12ec\u0001"+
55684 		"\u0000\u0000\u0000\u12ea\u12e8\u0001\u0000\u0000\u0000\u12eb\u12e2\u0001"+
55685 		"\u0000\u0000\u0000\u12eb\u12ec\u0001\u0000\u0000\u0000\u12ec\u12ed\u0001"+
55686 		"\u0000\u0000\u0000\u12ed\u12ee\u0005 \u0000\u0000\u12ee\u029b\u0001\u0000"+
55687 		"\u0000\u0000\u12ef\u12f0\u0005\u00e9\u0000\u0000\u12f0\u12f1\u0005\u001f"+
55688 		"\u0000\u0000\u12f1\u12f6\u0003\u02f4\u017a\u0000\u12f2\u12f3\u0005%\u0000"+
55689 		"\u0000\u12f3\u12f5\u0003\u02f4\u017a\u0000\u12f4\u12f2\u0001\u0000\u0000"+
55690 		"\u0000\u12f5\u12f8\u0001\u0000\u0000\u0000\u12f6\u12f4\u0001\u0000\u0000"+
55691 		"\u0000\u12f6\u12f7\u0001\u0000\u0000\u0000\u12f7\u12f9\u0001\u0000\u0000"+
55692 		"\u0000\u12f8\u12f6\u0001\u0000\u0000\u0000\u12f9\u12fa\u0005 \u0000\u0000"+
55693 		"\u12fa\u12fc\u0001\u0000\u0000\u0000\u12fb\u12ef\u0001\u0000\u0000\u0000"+
55694 		"\u12fb\u12fc\u0001\u0000\u0000\u0000\u12fc\u029d\u0001\u0000\u0000\u0000"+
55695 		"\u12fd\u12ff\u0003\u02e4\u0172\u0000\u12fe\u12fd\u0001\u0000\u0000\u0000"+
55696 		"\u12fe\u12ff\u0001\u0000\u0000\u0000\u12ff\u1300\u0001\u0000\u0000\u0000"+
55697 		"\u1300\u1302\u0005/\u0000\u0000\u1301\u1303\u0003\u02c8\u0164\u0000\u1302"+
55698 		"\u1301\u0001\u0000\u0000\u0000\u1302\u1303\u0001\u0000\u0000\u0000\u1303"+
55699 		"\u1305\u0001\u0000\u0000\u0000\u1304\u1306\u0005K\u0000\u0000\u1305\u1304"+
55700 		"\u0001\u0000\u0000\u0000\u1305\u1306\u0001\u0000\u0000\u0000\u1306\u1307"+
55701 		"\u0001\u0000\u0000\u0000\u1307\u130c\u0003@ \u0000\u1308\u130a\u0005`"+
55702 		"\u0000\u0000\u1309\u1308\u0001\u0000\u0000\u0000\u1309\u130a\u0001\u0000"+
55703 		"\u0000\u0000\u130a\u130b\u0001\u0000\u0000\u0000\u130b\u130d\u0003\\."+
55704 		"\u0000\u130c\u1309\u0001\u0000\u0000\u0000\u130c\u130d\u0001\u0000\u0000"+
55705 		"\u0000\u130d\u1312\u0001\u0000\u0000\u0000\u130e\u1313\u0003\u02a0\u0150"+
55706 		"\u0000\u130f\u1313\u0003\u02a2\u0151\u0000\u1310\u1313\u0003\u02a4\u0152"+
55707 		"\u0000\u1311\u1313\u0003\u02a6\u0153\u0000\u1312\u130e\u0001\u0000\u0000"+
55708 		"\u0000\u1312\u130f\u0001\u0000\u0000\u0000\u1312\u1310\u0001\u0000\u0000"+
55709 		"\u0000\u1312\u1311\u0001\u0000\u0000\u0000\u1313\u029f\u0001\u0000\u0000"+
55710 		"\u0000\u1314\u1316\u0003P(\u0000\u1315\u1314\u0001\u0000\u0000\u0000\u1315"+
55711 		"\u1316\u0001\u0000\u0000\u0000\u1316\u1318\u0001\u0000\u0000\u0000\u1317"+
55712 		"\u1319\u0003\u02ea\u0175\u0000\u1318\u1317\u0001\u0000\u0000\u0000\u1318"+
55713 		"\u1319\u0001\u0000\u0000\u0000\u1319\u131a\u0001\u0000\u0000\u0000\u131a"+
55714 		"\u131b\u0005\u009a\u0000\u0000\u131b\u131c\u0005L\u0000\u0000\u131c\u02a1"+
55715 		"\u0001\u0000\u0000\u0000\u131d\u131f\u0003P(\u0000\u131e\u131d\u0001\u0000"+
55716 		"\u0000\u0000\u131e\u131f\u0001\u0000\u0000\u0000\u131f\u1321\u0001\u0000"+
55717 		"\u0000\u0000\u1320\u1322\u0003\u02ea\u0175\u0000\u1321\u1320\u0001\u0000"+
55718 		"\u0000\u0000\u1321\u1322\u0001\u0000\u0000\u0000\u1322\u1323\u0001\u0000"+
55719 		"\u0000\u0000\u1323\u1324\u0005L\u0000\u0000\u1324\u1329\u0003\u02b0\u0158"+
55720 		"\u0000\u1325\u1326\u0005%\u0000\u0000\u1326\u1328\u0003\u02b0\u0158\u0000"+
55721 		"\u1327\u1325\u0001\u0000\u0000\u0000\u1328\u132b\u0001\u0000\u0000\u0000"+
55722 		"\u1329\u1327\u0001\u0000\u0000\u0000\u1329\u132a\u0001\u0000\u0000\u0000"+
55723 		"\u132a\u02a3\u0001\u0000\u0000\u0000\u132b\u1329\u0001\u0000\u0000\u0000"+
55724 		"\u132c\u132e\u0003P(\u0000\u132d\u132c\u0001\u0000\u0000\u0000\u132d\u132e"+
55725 		"\u0001\u0000\u0000\u0000\u132e\u1330\u0001\u0000\u0000\u0000\u132f\u1331"+
55726 		"\u0003\u02ea\u0175\u0000\u1330\u132f\u0001\u0000\u0000\u0000\u1330\u1331"+
55727 		"\u0001\u0000\u0000\u0000\u1331\u1332\u0001\u0000\u0000\u0000\u1332\u1333"+
55728 		"\u0003\u02bc\u015e\u0000\u1333\u02a5\u0001\u0000\u0000\u0000\u1334\u1336"+
55729 		"\u0003P(\u0000\u1335\u1334\u0001\u0000\u0000\u0000\u1335\u1336\u0001\u0000"+
55730 		"\u0000\u0000\u1336\u1337\u0001\u0000\u0000\u0000\u1337\u1338\u0003\u02a8"+
55731 		"\u0154\u0000\u1338\u02a7\u0001\u0000\u0000\u0000\u1339\u133a\u0007\u001a"+
55732 		"\u0000\u0000\u133a\u1343\u00038\u001c\u0000\u133b\u1340\u0003b1\u0000"+
55733 		"\u133c\u133d\u0005%\u0000\u0000\u133d\u133f\u0003b1\u0000\u133e\u133c"+
55734 		"\u0001\u0000\u0000\u0000\u133f\u1342\u0001\u0000\u0000\u0000\u1340\u133e"+
55735 		"\u0001\u0000\u0000\u0000\u1340\u1341\u0001\u0000\u0000\u0000\u1341\u1344"+
55736 		"\u0001\u0000\u0000\u0000\u1342\u1340\u0001\u0000\u0000\u0000\u1343\u133b"+
55737 		"\u0001\u0000\u0000\u0000\u1343\u1344\u0001\u0000\u0000\u0000\u1344\u02a9"+
55738 		"\u0001\u0000\u0000\u0000\u1345\u1347\u0003\u02e4\u0172\u0000\u1346\u1345"+
55739 		"\u0001\u0000\u0000\u0000\u1346\u1347\u0001\u0000\u0000\u0000\u1347\u1348"+
55740 		"\u0001\u0000\u0000\u0000\u1348\u134a\u00050\u0000\u0000\u1349\u134b\u0003"+
55741 		"\u02c8\u0164\u0000\u134a\u1349\u0001\u0000\u0000\u0000\u134a\u134b\u0001"+
55742 		"\u0000\u0000\u0000\u134b\u134c\u0001\u0000\u0000\u0000\u134c\u134d\u0003"+
55743 		"\u02d2\u0169\u0000\u134d\u134f\u0003\u02ae\u0157\u0000\u134e\u1350\u0003"+
55744 		"\u02dc\u016e\u0000\u134f\u134e\u0001\u0000\u0000\u0000\u134f\u1350\u0001"+
55745 		"\u0000\u0000\u0000\u1350\u1353\u0001\u0000\u0000\u0000\u1351\u1352\u0005"+
55746 		"\u00e9\u0000\u0000\u1352\u1354\u0003\u02f4\u017a\u0000\u1353\u1351\u0001"+
55747 		"\u0000\u0000\u0000\u1353\u1354\u0001\u0000\u0000\u0000\u1354\u02ab\u0001"+
55748 		"\u0000\u0000\u0000\u1355\u1356\u0003H$\u0000\u1356\u1357\u0005\u0018\u0000"+
55749 		"\u0000\u1357\u1358\u0003\u02b2\u0159\u0000\u1358\u02ad\u0001\u0000\u0000"+
55750 		"\u0000\u1359\u135a\u0005:\u0000\u0000\u135a\u135f\u0003\u02ac\u0156\u0000"+
55751 		"\u135b\u135c\u0005%\u0000\u0000\u135c\u135e\u0003\u02ac\u0156\u0000\u135d"+
55752 		"\u135b\u0001\u0000\u0000\u0000\u135e\u1361\u0001\u0000\u0000\u0000\u135f"+
55753 		"\u135d\u0001\u0000\u0000\u0000\u135f\u1360\u0001\u0000\u0000\u0000\u1360"+
55754 		"\u1363\u0001\u0000\u0000\u0000\u1361\u135f\u0001\u0000\u0000\u0000\u1362"+
55755 		"\u1364\u0003\u02d0\u0168\u0000\u1363\u1362\u0001\u0000\u0000\u0000\u1363"+
55756 		"\u1364\u0001\u0000\u0000\u0000\u1364\u02af\u0001\u0000\u0000\u0000\u1365"+
55757 		"\u1366\u0005\u001f\u0000\u0000\u1366\u136b\u0003\u02b2\u0159\u0000\u1367"+
55758 		"\u1368\u0005%\u0000\u0000\u1368\u136a\u0003\u02b2\u0159\u0000\u1369\u1367"+
55759 		"\u0001\u0000\u0000\u0000\u136a\u136d\u0001\u0000\u0000\u0000\u136b\u1369"+
55760 		"\u0001\u0000\u0000\u0000\u136b\u136c\u0001\u0000\u0000\u0000\u136c\u136e"+
55761 		"\u0001\u0000\u0000\u0000\u136d\u136b\u0001\u0000\u0000\u0000\u136e\u136f"+
55762 		"\u0005 \u0000\u0000\u136f\u1373\u0001\u0000\u0000\u0000\u1370\u1371\u0005"+
55763 		"\u001f\u0000\u0000\u1371\u1373\u0005 \u0000\u0000\u1372\u1365\u0001\u0000"+
55764 		"\u0000\u0000\u1372\u1370\u0001\u0000\u0000\u0000\u1373\u02b1\u0001\u0000"+
55765 		"\u0000\u0000\u1374\u1377\u0003b1\u0000\u1375\u1377\u0005\u009a\u0000\u0000"+
55766 		"\u1376\u1374\u0001\u0000\u0000\u0000\u1376\u1375\u0001\u0000\u0000\u0000"+
55767 		"\u1377\u02b3\u0001\u0000\u0000\u0000\u1378\u137a\u0003\u02e4\u0172\u0000"+
55768 		"\u1379\u1378\u0001\u0000\u0000\u0000\u1379\u137a\u0001\u0000\u0000\u0000"+
55769 		"\u137a\u137b\u0001\u0000\u0000\u0000\u137b\u137d\u00051\u0000\u0000\u137c"+
55770 		"\u137e\u0003\u02c8\u0164\u0000\u137d\u137c\u0001\u0000\u0000\u0000\u137d"+
55771 		"\u137e\u0001\u0000\u0000\u0000\u137e\u1381\u0001\u0000\u0000\u0000\u137f"+
55772 		"\u1382\u0003\u02b6\u015b\u0000\u1380\u1382\u0003\u02b8\u015c\u0000\u1381"+
55773 		"\u137f\u0001\u0000\u0000\u0000\u1381\u1380\u0001\u0000\u0000\u0000\u1382"+
55774 		"\u1384\u0001\u0000\u0000\u0000\u1383\u1385\u0003\u02ea\u0175\u0000\u1384"+
55775 		"\u1383\u0001\u0000\u0000\u0000\u1384\u1385\u0001\u0000\u0000\u0000\u1385"+
55776 		"\u1387\u0001\u0000\u0000\u0000\u1386\u1388\u0003\u02dc\u016e\u0000\u1387"+
55777 		"\u1386\u0001\u0000\u0000\u0000\u1387\u1388\u0001\u0000\u0000\u0000\u1388"+
55778 		"\u138b\u0001\u0000\u0000\u0000\u1389\u138a\u0005\u00e9\u0000\u0000\u138a"+
55779 		"\u138c\u0003\u02f4\u017a\u0000\u138b\u1389\u0001\u0000\u0000\u0000\u138b"+
55780 		"\u138c\u0001\u0000\u0000\u0000\u138c\u02b5\u0001\u0000\u0000\u0000\u138d"+
55781 		"\u138f\u0005U\u0000\u0000\u138e\u138d\u0001\u0000\u0000\u0000\u138e\u138f"+
55782 		"\u0001\u0000\u0000\u0000\u138f\u1391\u0001\u0000\u0000\u0000\u1390\u1392"+
55783 		"\u0005\u001f\u0000\u0000\u1391\u1390\u0001\u0000\u0000\u0000\u1391\u1392"+
55784 		"\u0001\u0000\u0000\u0000\u1392\u1393\u0001\u0000\u0000\u0000\u1393\u1395"+
55785 		"\u0003@ \u0000\u1394\u1396\u0005 \u0000\u0000\u1395\u1394\u0001\u0000"+
55786 		"\u0000\u0000\u1395\u1396\u0001\u0000\u0000\u0000\u1396\u139b\u0001\u0000"+
55787 		"\u0000\u0000\u1397\u1399\u0005`\u0000\u0000\u1398\u1397\u0001\u0000\u0000"+
55788 		"\u0000\u1398\u1399\u0001\u0000\u0000\u0000\u1399\u139a\u0001\u0000\u0000"+
55789 		"\u0000\u139a\u139c\u0003\\.\u0000\u139b\u1398\u0001\u0000\u0000\u0000"+
55790 		"\u139b\u139c\u0001\u0000\u0000\u0000\u139c\u02b7\u0001\u0000\u0000\u0000"+
55791 		"\u139d\u139e\u0003\u02ba\u015d\u0000\u139e\u139f\u0005U\u0000\u0000\u139f"+
55792 		"\u13a0\u0003\u02d2\u0169\u0000\u13a0\u13a7\u0001\u0000\u0000\u0000\u13a1"+
55793 		"\u13a2\u0005U\u0000\u0000\u13a2\u13a3\u0003\u02ba\u015d\u0000\u13a3\u13a4"+
55794 		"\u0005^\u0000\u0000\u13a4\u13a5\u0003\u02d2\u0169\u0000\u13a5\u13a7\u0001"+
55795 		"\u0000\u0000\u0000\u13a6\u139d\u0001\u0000\u0000\u0000\u13a6\u13a1\u0001"+
55796 		"\u0000\u0000\u0000\u13a7\u02b9\u0001\u0000\u0000\u0000\u13a8\u13aa\u0003"+
55797 		"@ \u0000\u13a9\u13ab\u0005\u0015\u0000\u0000\u13aa\u13a9\u0001\u0000\u0000"+
55798 		"\u0000\u13aa\u13ab\u0001\u0000\u0000\u0000\u13ab\u13b3\u0001\u0000\u0000"+
55799 		"\u0000\u13ac\u13ad\u0005%\u0000\u0000\u13ad\u13af\u0003@ \u0000\u13ae"+
55800 		"\u13b0\u0005\u0015\u0000\u0000\u13af\u13ae\u0001\u0000\u0000\u0000\u13af"+
55801 		"\u13b0\u0001\u0000\u0000\u0000\u13b0\u13b2\u0001\u0000\u0000\u0000\u13b1"+
55802 		"\u13ac\u0001\u0000\u0000\u0000\u13b2\u13b5\u0001\u0000\u0000\u0000\u13b3"+
55803 		"\u13b1\u0001\u0000\u0000\u0000\u13b3\u13b4\u0001\u0000\u0000\u0000\u13b4"+
55804 		"\u02bb\u0001\u0000\u0000\u0000\u13b5\u13b3\u0001\u0000\u0000\u0000\u13b6"+
55805 		"\u13b7\u0003\u02be\u015f\u0000\u13b7\u02bd\u0001\u0000\u0000\u0000\u13b8"+
55806 		"\u13c4\u0003\u02c0\u0160\u0000\u13b9\u13bb\u0005N\u0000\u0000\u13ba\u13bc"+
55807 		"\u0005r\u0000\u0000\u13bb\u13ba\u0001\u0000\u0000\u0000\u13bb\u13bc\u0001"+
55808 		"\u0000\u0000\u0000\u13bc\u13c0\u0001\u0000\u0000\u0000\u13bd\u13c0\u0005"+
55809 		"\u00bc\u0000\u0000\u13be\u13c0\u0005\u00bd\u0000\u0000\u13bf\u13b9\u0001"+
55810 		"\u0000\u0000\u0000\u13bf\u13bd\u0001\u0000\u0000\u0000\u13bf\u13be\u0001"+
55811 		"\u0000\u0000\u0000\u13c0\u13c1\u0001\u0000\u0000\u0000\u13c1\u13c3\u0003"+
55812 		"\u02c0\u0160\u0000\u13c2\u13bf\u0001\u0000\u0000\u0000\u13c3\u13c6\u0001"+
55813 		"\u0000\u0000\u0000\u13c4\u13c2\u0001\u0000\u0000\u0000\u13c4\u13c5\u0001"+
55814 		"\u0000\u0000\u0000\u13c5\u02bf\u0001\u0000\u0000\u0000\u13c6\u13c4\u0001"+
55815 		"\u0000\u0000\u0000\u13c7\u13c9\u0003\u0300\u0180\u0000\u13c8\u13c7\u0001"+
55816 		"\u0000\u0000\u0000\u13c8\u13c9\u0001\u0000\u0000\u0000\u13c9\u13ca\u0001"+
55817 		"\u0000\u0000\u0000\u13ca\u13cc\u0005.\u0000\u0000\u13cb\u13cd\u0003\u02c2"+
55818 		"\u0161\u0000\u13cc\u13cb\u0001\u0000\u0000\u0000\u13cc\u13cd\u0001\u0000"+
55819 		"\u0000\u0000\u13cd\u13ce\u0001\u0000\u0000\u0000\u13ce\u13d0\u0003\u02c4"+
55820 		"\u0162\u0000\u13cf\u13d1\u0003\u02d0\u0168\u0000\u13d0\u13cf\u0001\u0000"+
55821 		"\u0000\u0000\u13d0\u13d1\u0001\u0000\u0000\u0000\u13d1\u13d3\u0001\u0000"+
55822 		"\u0000\u0000\u13d2\u13d4\u0003\u02dc\u016e\u0000\u13d3\u13d2\u0001\u0000"+
55823 		"\u0000\u0000\u13d3\u13d4\u0001\u0000\u0000\u0000\u13d4\u13d6\u0001\u0000"+
55824 		"\u0000\u0000\u13d5\u13d7\u0003\u02de\u016f\u0000\u13d6\u13d5\u0001\u0000"+
55825 		"\u0000\u0000\u13d6\u13d7\u0001\u0000\u0000\u0000\u13d7\u13d9\u0001\u0000"+
55826 		"\u0000\u0000\u13d8\u13da\u0003\u02e0\u0170\u0000\u13d9\u13d8\u0001\u0000"+
55827 		"\u0000\u0000\u13d9\u13da\u0001\u0000\u0000\u0000\u13da\u13dc\u0001\u0000"+
55828 		"\u0000\u0000\u13db\u13dd\u0003\u0090H\u0000\u13dc\u13db\u0001\u0000\u0000"+
55829 		"\u0000\u13dc\u13dd\u0001\u0000\u0000\u0000\u13dd\u13df\u0001\u0000\u0000"+
55830 		"\u0000\u13de\u13e0\u0003\u02f8\u017c\u0000\u13df\u13de\u0001\u0000\u0000"+
55831 		"\u0000\u13df\u13e0\u0001\u0000\u0000\u0000\u13e0\u02c1\u0001\u0000\u0000"+
55832 		"\u0000\u13e1\u13e2\u0007H\u0000\u0000\u13e2\u02c3\u0001\u0000\u0000\u0000"+
55833 		"\u13e3\u13e9\u0003\u02c6\u0163\u0000\u13e4\u13e6\u0003\u02c8\u0164\u0000"+
55834 		"\u13e5\u13e7\u0003\u02c6\u0163\u0000\u13e6\u13e5\u0001\u0000\u0000\u0000"+
55835 		"\u13e6\u13e7\u0001\u0000\u0000\u0000\u13e7\u13e9\u0001\u0000\u0000\u0000"+
55836 		"\u13e8\u13e3\u0001\u0000\u0000\u0000\u13e8\u13e4\u0001\u0000\u0000\u0000"+
55837 		"\u13e9\u13ee\u0001\u0000\u0000\u0000\u13ea\u13eb\u0005%\u0000\u0000\u13eb"+
55838 		"\u13ed\u0003\u02c6\u0163\u0000\u13ec\u13ea\u0001\u0000\u0000\u0000\u13ed"+
55839 		"\u13f0\u0001\u0000\u0000\u0000\u13ee\u13ec\u0001\u0000\u0000\u0000\u13ee"+
55840 		"\u13ef\u0001\u0000\u0000\u0000\u13ef\u02c5\u0001\u0000\u0000\u0000\u13f0"+
55841 		"\u13ee\u0001\u0000\u0000\u0000\u13f1\u1407\u0003\u02ce\u0167\u0000\u13f2"+
55842 		"\u1407\u0003\u02cc\u0166\u0000\u13f3\u13f4\u0003\\.\u0000\u13f4\u13f5"+
55843 		"\u0005\u0018\u0000\u0000\u13f5\u13f7\u0001\u0000\u0000\u0000\u13f6\u13f3"+
55844 		"\u0001\u0000\u0000\u0000\u13f6\u13f7\u0001\u0000\u0000\u0000\u13f7\u13fa"+
55845 		"\u0001\u0000\u0000\u0000\u13f8\u13fb\u0003H$\u0000\u13f9\u13fb\u0003b"+
55846 		"1\u0000\u13fa\u13f8\u0001\u0000\u0000\u0000\u13fa\u13f9\u0001\u0000\u0000"+
55847 		"\u0000\u13fb\u1407\u0001\u0000\u0000\u0000\u13fc\u13ff\u0003H$\u0000\u13fd"+
55848 		"\u13ff\u0003b1\u0000\u13fe\u13fc\u0001\u0000\u0000\u0000\u13fe\u13fd\u0001"+
55849 		"\u0000\u0000\u0000\u13ff\u1404\u0001\u0000\u0000\u0000\u1400\u1402\u0005"+
55850 		"`\u0000\u0000\u1401\u1400\u0001\u0000\u0000\u0000\u1401\u1402\u0001\u0000"+
55851 		"\u0000\u0000\u1402\u1403\u0001\u0000\u0000\u0000\u1403\u1405\u0003\\."+
55852 		"\u0000\u1404\u1401\u0001\u0000\u0000\u0000\u1404\u1405\u0001\u0000\u0000"+
55853 		"\u0000\u1405\u1407\u0001\u0000\u0000\u0000\u1406\u13f1\u0001\u0000\u0000"+
55854 		"\u0000\u1406\u13f2\u0001\u0000\u0000\u0000\u1406\u13f6\u0001\u0000\u0000"+
55855 		"\u0000\u1406\u13fe\u0001\u0000\u0000\u0000\u1407\u02c7\u0001\u0000\u0000"+
55856 		"\u0000\u1408\u140a\u0005\u00df\u0000\u0000\u1409\u140b\u0005\u001f\u0000"+
55857 		"\u0000\u140a\u1409\u0001\u0000\u0000\u0000\u140a\u140b\u0001\u0000\u0000"+
55858 		"\u0000\u140b\u140c\u0001\u0000\u0000\u0000\u140c\u140e\u0003\u02ca\u0165"+
55859 		"\u0000\u140d\u140f\u0005 \u0000\u0000\u140e\u140d\u0001\u0000\u0000\u0000"+
55860 		"\u140e\u140f\u0001\u0000\u0000\u0000\u140f\u1411\u0001\u0000\u0000\u0000"+
55861 		"\u1410\u1412\u0005\u00ba\u0000\u0000\u1411\u1410\u0001\u0000\u0000\u0000"+
55862 		"\u1411\u1412\u0001\u0000\u0000\u0000\u1412\u1415\u0001\u0000\u0000\u0000"+
55863 		"\u1413\u1414\u0005M\u0000\u0000\u1414\u1416\u0005\u00bb\u0000\u0000\u1415"+
55864 		"\u1413\u0001\u0000\u0000\u0000\u1415\u1416\u0001\u0000\u0000\u0000\u1416"+
55865 		"\u1424\u0001\u0000\u0000\u0000\u1417\u1418\u0005\u01a5\u0000\u0000\u1418"+
55866 		"\u1419\u0005\u001f\u0000\u0000\u1419\u141a\u0005 \u0000\u0000\u141a\u141b"+
55867 		"\u0005\u0119\u0000\u0000\u141b\u141c\u0005\u001f\u0000\u0000\u141c\u141d"+
55868 		"\u0003\u0090H\u0000\u141d\u1422\u0005 \u0000\u0000\u141e\u1420\u0005`"+
55869 		"\u0000\u0000\u141f\u141e\u0001\u0000\u0000\u0000\u141f\u1420\u0001\u0000"+
55870 		"\u0000\u0000\u1420\u1421\u0001\u0000\u0000\u0000\u1421\u1423\u0003\\."+
55871 		"\u0000\u1422\u141f\u0001\u0000\u0000\u0000\u1422\u1423\u0001\u0000\u0000"+
55872 		"\u0000\u1423\u1425\u0001\u0000\u0000\u0000\u1424\u1417\u0001\u0000\u0000"+
55873 		"\u0000\u1424\u1425\u0001\u0000\u0000\u0000\u1425\u02c9\u0001\u0000\u0000"+
55874 		"\u0000\u1426\u1429\u0003\u001e\u000f\u0000\u1427\u1429\u0003\u0018\f\u0000"+
55875 		"\u1428\u1426\u0001\u0000\u0000\u0000\u1428\u1427\u0001\u0000\u0000\u0000"+
55876 		"\u1429\u02cb\u0001\u0000\u0000\u0000\u142a\u142b\u0005\u0011\u0000\u0000"+
55877 		"\u142b\u02cd\u0001\u0000\u0000\u0000\u142c\u142d\u0003*\u0015\u0000\u142d"+
55878 		"\u142e\u0005\u0015\u0000\u0000\u142e\u02cf\u0001\u0000\u0000\u0000\u142f"+
55879 		"\u1430\u0005U\u0000\u0000\u1430\u1431\u0003\u02d2\u0169\u0000\u1431\u02d1"+
55880 		"\u0001\u0000\u0000\u0000\u1432\u1437\u0003\u02d4\u016a\u0000\u1433\u1434"+
55881 		"\u0005%\u0000\u0000\u1434\u1436\u0003\u02d4\u016a\u0000\u1435\u1433\u0001"+
55882 		"\u0000\u0000\u0000\u1436\u1439\u0001\u0000\u0000\u0000\u1437\u1435\u0001"+
55883 		"\u0000\u0000\u0000\u1437\u1438\u0001\u0000\u0000\u0000\u1438\u02d3\u0001"+
55884 		"\u0000\u0000\u0000\u1439\u1437\u0001\u0000\u0000\u0000\u143a\u143e\u0003"+
55885 		"\u02d6\u016b\u0000\u143b\u143d\u0003\u02d8\u016c\u0000\u143c\u143b\u0001"+
55886 		"\u0000\u0000\u0000\u143d\u1440\u0001\u0000\u0000\u0000\u143e\u143c\u0001"+
55887 		"\u0000\u0000\u0000\u143e\u143f\u0001\u0000\u0000\u0000\u143f\u02d5\u0001"+
55888 		"\u0000\u0000\u0000\u1440\u143e\u0001\u0000\u0000\u0000\u1441\u1446\u0003"+
55889 		"@ \u0000\u1442\u1444\u0005`\u0000\u0000\u1443\u1442\u0001\u0000\u0000"+
55890 		"\u0000\u1443\u1444\u0001\u0000\u0000\u0000\u1444\u1445\u0001\u0000\u0000"+
55891 		"\u0000\u1445\u1447\u0003\\.\u0000\u1446\u1443\u0001\u0000\u0000\u0000"+
55892 		"\u1446\u1447\u0001\u0000\u0000\u0000\u1447\u145c\u0001\u0000\u0000\u0000"+
55893 		"\u1448\u144a\u0003\u02e2\u0171\u0000\u1449\u144b\u0005`\u0000\u0000\u144a"+
55894 		"\u1449\u0001\u0000\u0000\u0000\u144a\u144b\u0001\u0000\u0000\u0000\u144b"+
55895 		"\u144c\u0001\u0000\u0000\u0000\u144c\u144e\u0003\\.\u0000\u144d\u144f"+
55896 		"\u0003P(\u0000\u144e\u144d\u0001\u0000\u0000\u0000\u144e\u144f\u0001\u0000"+
55897 		"\u0000\u0000\u144f\u145c\u0001\u0000\u0000\u0000\u1450\u1455\u0003b1\u0000"+
55898 		"\u1451\u1453\u0005`\u0000\u0000\u1452\u1451\u0001\u0000\u0000\u0000\u1452"+
55899 		"\u1453\u0001\u0000\u0000\u0000\u1453\u1454\u0001\u0000\u0000\u0000\u1454"+
55900 		"\u1456\u0003\\.\u0000\u1455\u1452\u0001\u0000\u0000\u0000\u1455\u1456"+
55901 		"\u0001\u0000\u0000\u0000\u1456\u145c\u0001\u0000\u0000\u0000\u1457\u1458"+
55902 		"\u0005\u001f\u0000\u0000\u1458\u1459\u0003\u02d2\u0169\u0000\u1459\u145a"+
55903 		"\u0005 \u0000\u0000\u145a\u145c\u0001\u0000\u0000\u0000\u145b\u1441\u0001"+
55904 		"\u0000\u0000\u0000\u145b\u1448\u0001\u0000\u0000\u0000\u145b\u1450\u0001"+
55905 		"\u0000\u0000\u0000\u145b\u1457\u0001\u0000\u0000\u0000\u145c\u02d7\u0001"+
55906 		"\u0000\u0000\u0000\u145d\u145f\u0005V\u0000\u0000\u145e\u145d\u0001\u0000"+
55907 		"\u0000\u0000\u145e\u145f\u0001\u0000\u0000\u0000\u145f\u1461\u0001\u0000"+
55908 		"\u0000\u0000\u1460\u1462\u0007I\u0000\u0000\u1461\u1460\u0001\u0000\u0000"+
55909 		"\u0000\u1461\u1462\u0001\u0000\u0000\u0000\u1462\u1463\u0001\u0000\u0000"+
55910 		"\u0000\u1463\u1464\u0005W\u0000\u0000\u1464\u1465\u0001\u0000\u0000\u0000"+
55911 		"\u1465\u1467\u0003\u02d6\u016b\u0000\u1466\u1468\u0003\u02da\u016d\u0000"+
55912 		"\u1467\u1466\u0001\u0000\u0000\u0000\u1467\u1468\u0001\u0000\u0000\u0000"+
55913 		"\u1468\u147c\u0001\u0000\u0000\u0000\u1469\u146b\u0005V\u0000\u0000\u146a"+
55914 		"\u1469\u0001\u0000\u0000\u0000\u146a\u146b\u0001\u0000\u0000\u0000\u146b"+
55915 		"\u146c\u0001\u0000\u0000\u0000\u146c\u146e\u0007J\u0000\u0000\u146d\u146f"+
55916 		"\u0005Z\u0000\u0000\u146e\u146d\u0001\u0000\u0000\u0000\u146e\u146f\u0001"+
55917 		"\u0000\u0000\u0000\u146f\u1470\u0001\u0000\u0000\u0000\u1470\u1471\u0005"+
55918 		"W\u0000\u0000\u1471\u1473\u0003\u02d6\u016b\u0000\u1472\u1474\u0003\u02da"+
55919 		"\u016d\u0000\u1473\u1472\u0001\u0000\u0000\u0000\u1473\u1474\u0001\u0000"+
55920 		"\u0000\u0000\u1474\u147c\u0001\u0000\u0000\u0000\u1475\u1476\u0007K\u0000"+
55921 		"\u0000\u1476\u1477\u0005\u00d7\u0000\u0000\u1477\u1479\u0003\u02d6\u016b"+
55922 		"\u0000\u1478\u147a\u0003\u02da\u016d\u0000\u1479\u1478\u0001\u0000\u0000"+
55923 		"\u0000\u1479\u147a\u0001\u0000\u0000\u0000\u147a\u147c\u0001\u0000\u0000"+
55924 		"\u0000\u147b\u145e\u0001\u0000\u0000\u0000\u147b\u146a\u0001\u0000\u0000"+
55925 		"\u0000\u147b\u1475\u0001\u0000\u0000\u0000\u147c\u02d9\u0001\u0000\u0000"+
55926 		"\u0000\u147d\u147e\u0005a\u0000\u0000\u147e\u1482\u0003b1\u0000\u147f"+
55927 		"\u1480\u0005^\u0000\u0000\u1480\u1482\u0003P(\u0000\u1481\u147d\u0001"+
55928 		"\u0000\u0000\u0000\u1481\u147f\u0001\u0000\u0000\u0000\u1482\u02db\u0001"+
55929 		"\u0000\u0000\u0000\u1483\u1484\u0005_\u0000\u0000\u1484\u1485\u0003b1"+
55930 		"\u0000\u1485\u02dd\u0001\u0000\u0000\u0000\u1486\u1487\u0005v\u0000\u0000"+
55931 		"\u1487\u1488\u0005w\u0000\u0000\u1488\u148d\u0003\u0092I\u0000\u1489\u148a"+
55932 		"\u0005%\u0000\u0000\u148a\u148c\u0003\u0092I\u0000\u148b\u1489\u0001\u0000"+
55933 		"\u0000\u0000\u148c\u148f\u0001\u0000\u0000\u0000\u148d\u148b\u0001\u0000"+
55934 		"\u0000\u0000\u148d\u148e\u0001\u0000\u0000\u0000\u148e\u02df\u0001\u0000"+
55935 		"\u0000\u0000\u148f\u148d\u0001\u0000\u0000\u0000\u1490\u1491\u0005z\u0000"+
55936 		"\u0000\u1491\u1492\u0003b1\u0000\u1492\u02e1\u0001\u0000\u0000\u0000\u1493"+
55937 		"\u1494\u0005\u001f\u0000\u0000\u1494\u1495\u0003\u02be\u015f\u0000\u1495"+
55938 		"\u1496\u0005 \u0000\u0000\u1496\u02e3\u0001\u0000\u0000\u0000\u1497\u1498"+
55939 		"\u0005M\u0000\u0000\u1498\u1499\u0003\u02e6\u0173\u0000\u1499\u02e5\u0001"+
55940 		"\u0000\u0000\u0000\u149a\u149f\u0003\u02e8\u0174\u0000\u149b\u149c\u0005"+
55941 		"%\u0000\u0000\u149c\u149e\u0003\u02e8\u0174\u0000\u149d\u149b\u0001\u0000"+
55942 		"\u0000\u0000\u149e\u14a1\u0001\u0000\u0000\u0000\u149f\u149d\u0001\u0000"+
55943 		"\u0000\u0000\u149f\u14a0\u0001\u0000\u0000\u0000\u14a0\u02e7\u0001\u0000"+
55944 		"\u0000\u0000\u14a1\u149f\u0001\u0000\u0000\u0000\u14a2\u14a4\u0003*\u0015"+
55945 		"\u0000\u14a3\u14a5\u0003P(\u0000\u14a4\u14a3\u0001\u0000\u0000\u0000\u14a4"+
55946 		"\u14a5\u0001\u0000\u0000\u0000\u14a5\u14a6\u0001\u0000\u0000\u0000\u14a6"+
55947 		"\u14a7\u0005`\u0000\u0000\u14a7\u14a8\u0003\u02e2\u0171\u0000\u14a8\u02e9"+
55948 		"\u0001\u0000\u0000\u0000\u14a9\u14ac\u0005\u01b9\u0000\u0000\u14aa\u14ad"+
55949 		"\u0003\u02ec\u0176\u0000\u14ab\u14ad\u0003\u02f0\u0178\u0000\u14ac\u14aa"+
55950 		"\u0001\u0000\u0000\u0000\u14ac\u14ab\u0001\u0000\u0000\u0000\u14ad\u14b3"+
55951 		"\u0001\u0000\u0000\u0000\u14ae\u14af\u0005K\u0000\u0000\u14af\u14b1\u0003"+
55952 		"\u02f2\u0179\u0000\u14b0\u14b2\u0003P(\u0000\u14b1\u14b0\u0001\u0000\u0000"+
55953 		"\u0000\u14b1\u14b2\u0001\u0000\u0000\u0000\u14b2\u14b4\u0001\u0000\u0000"+
55954 		"\u0000\u14b3\u14ae\u0001\u0000\u0000\u0000\u14b3\u14b4\u0001\u0000\u0000"+
55955 		"\u0000\u14b4\u02eb\u0001\u0000\u0000\u0000\u14b5\u14ba\u0003\u02ee\u0177"+
55956 		"\u0000\u14b6\u14b7\u0005%\u0000\u0000\u14b7\u14b9\u0003\u02ee\u0177\u0000"+
55957 		"\u14b8\u14b6\u0001\u0000\u0000\u0000\u14b9\u14bc\u0001\u0000\u0000\u0000"+
55958 		"\u14ba\u14b8\u0001\u0000\u0000\u0000\u14ba\u14bb\u0001\u0000\u0000\u0000"+
55959 		"\u14bb\u02ed\u0001\u0000\u0000\u0000\u14bc\u14ba\u0001\u0000\u0000\u0000"+
55960 		"\u14bd\u14be\u0007L\u0000\u0000\u14be\u14bf\u0005\u0014\u0000\u0000\u14bf"+
55961 		"\u14c4\u0003N\'\u0000\u14c0\u14c2\u0005`\u0000\u0000\u14c1\u14c0\u0001"+
55962 		"\u0000\u0000\u0000\u14c1\u14c2\u0001\u0000\u0000\u0000\u14c2\u14c3\u0001"+
55963 		"\u0000\u0000\u0000\u14c3\u14c5\u0003\\.\u0000\u14c4\u14c1\u0001\u0000"+
55964 		"\u0000\u0000\u14c4\u14c5\u0001\u0000\u0000\u0000\u14c5\u02ef\u0001\u0000"+
55965 		"\u0000\u0000\u14c6\u14c7\u0007L\u0000\u0000\u14c7\u14c8\u0005\u0015\u0000"+
55966 		"\u0000\u14c8\u02f1\u0001\u0000\u0000\u0000\u14c9\u14ca\u0005*\u0000\u0000"+
55967 		"\u14ca\u14cd\u0003N\'\u0000\u14cb\u14cd\u0003@ \u0000\u14cc\u14c9\u0001"+
55968 		"\u0000\u0000\u0000\u14cc\u14cb\u0001\u0000\u0000\u0000\u14cd\u02f3\u0001"+
55969 		"\u0000\u0000\u0000\u14ce\u14cf\u0007M\u0000\u0000\u14cf\u1515\u0005v\u0000"+
55970 		"\u0000\u14d0\u14d1\u0007N\u0000\u0000\u14d1\u1515\u0005N\u0000\u0000\u14d2"+
55971 		"\u14d3\u0007O\u0000\u0000\u14d3\u1515\u0005W\u0000\u0000\u14d4\u14d5\u0005"+
55972 		"\u00c1\u0000\u0000\u14d5\u1515\u0005\u00c2\u0000\u0000\u14d6\u14d7\u0005"+
55973 		"\u00c3\u0000\u0000\u14d7\u1515\u0005\u02b9\u0000\u0000\u14d8\u14d9\u0005"+
55974 		"\u00c4\u0000\u0000\u14d9\u1515\u0005u\u0000\u0000\u14da\u14db\u0007P\u0000"+
55975 		"\u0000\u14db\u1515\u0005\u01ce\u0000\u0000\u14dc\u14dd\u0007P\u0000\u0000"+
55976 		"\u14dd\u1515\u0005\u01cf\u0000\u0000\u14de\u1515\u0005\u01d0\u0000\u0000"+
55977 		"\u14df\u14e0\u0005\u00c5\u0000\u0000\u14e0\u1515\u0005\u00c6\u0000\u0000"+
55978 		"\u14e1\u14e2\u0005\u01d1\u0000\u0000\u14e2\u1515\u0005\u00c6\u0000\u0000"+
55979 		"\u14e3\u14e4\u0005\u01d2\u0000\u0000\u14e4\u14e5\u0005\u0018\u0000\u0000"+
55980 		"\u14e5\u1515\u0005\u02bb\u0000\u0000\u14e6\u14e7\u0005\u01d3\u0000\u0000"+
55981 		"\u14e7\u14e8\u0005\u0018\u0000\u0000\u14e8\u1515\u0005\u02bb\u0000\u0000"+
55982 		"\u14e9\u14ea\u0005\u0113\u0000\u0000\u14ea\u1515\u0005\u02b9\u0000\u0000"+
55983 		"\u14eb\u14ec\u0005\u01d4\u0000\u0000\u14ec\u1515\u0005\u02b9\u0000\u0000"+
55984 		"\u14ed\u1515\u0005\u01d5\u0000\u0000\u14ee\u14ef\u0005\u00c7\u0000\u0000"+
55985 		"\u14ef\u14f0\u0005f\u0000\u0000\u14f0\u14f1\u0005\u001f\u0000\u0000\u14f1"+
55986 		"\u14f2\u0005*\u0000\u0000\u14f2\u14f8\u0003N\'\u0000\u14f3\u14f7\u0005"+
55987 		"\u00e2\u0000\u0000\u14f4\u14f5\u0005\u0018\u0000\u0000\u14f5\u14f7\u0003"+
55988 		"*\u0015\u0000\u14f6\u14f3\u0001\u0000\u0000\u0000\u14f6\u14f4\u0001\u0000"+
55989 		"\u0000\u0000\u14f7\u14fa\u0001\u0000\u0000\u0000\u14f8\u14f6\u0001\u0000"+
55990 		"\u0000\u0000\u14f8\u14f9\u0001\u0000\u0000\u0000\u14f9\u14fb\u0001\u0000"+
55991 		"\u0000\u0000\u14fa\u14f8\u0001\u0000\u0000\u0000\u14fb\u14fc\u0005 \u0000"+
55992 		"\u0000\u14fc\u1515\u0001\u0000\u0000\u0000\u14fd\u14fe\u0005\u00c7\u0000"+
55993 		"\u0000\u14fe\u14ff\u0005f\u0000\u0000\u14ff\u1515\u0005\u00e2\u0000\u0000"+
55994 		"\u1500\u1501\u0005\u01d6\u0000\u0000\u1501\u1515\u0007=\u0000\u0000\u1502"+
55995 		"\u1503\u0005\u01d7\u0000\u0000\u1503\u1515\u0005\u02b9\u0000\u0000\u1504"+
55996 		"\u1515\u0005\u01d8\u0000\u0000\u1505\u1506\u0005\u01d9\u0000\u0000\u1506"+
55997 		"\u1515\u0005\u00c6\u0000\u0000\u1507\u1508\u0005\u00be\u0000\u0000\u1508"+
55998 		"\u1509\u0005\u00ca\u0000\u0000\u1509\u150d\u0005\u001f\u0000\u0000\u150a"+
55999 		"\u150c\u0003\u02f6\u017b\u0000\u150b\u150a\u0001\u0000\u0000\u0000\u150c"+
56000 		"\u150f\u0001\u0000\u0000\u0000\u150d\u150b\u0001\u0000\u0000\u0000\u150d"+
56001 		"\u150e\u0001\u0000\u0000\u0000\u150e\u1510\u0001\u0000\u0000\u0000\u150f"+
56002 		"\u150d\u0001\u0000\u0000\u0000\u1510\u1515\u0005 \u0000\u0000\u1511\u1512"+
56003 		"\u0005\u00be\u0000\u0000\u1512\u1513\u0005\u00c6\u0000\u0000\u1513\u1515"+
56004 		"\u0005\u02be\u0000\u0000\u1514\u14ce\u0001\u0000\u0000\u0000\u1514\u14d0"+
56005 		"\u0001\u0000\u0000\u0000\u1514\u14d2\u0001\u0000\u0000\u0000\u1514\u14d4"+
56006 		"\u0001\u0000\u0000\u0000\u1514\u14d6\u0001\u0000\u0000\u0000\u1514\u14d8"+
56007 		"\u0001\u0000\u0000\u0000\u1514\u14da\u0001\u0000\u0000\u0000\u1514\u14dc"+
56008 		"\u0001\u0000\u0000\u0000\u1514\u14de\u0001\u0000\u0000\u0000\u1514\u14df"+
56009 		"\u0001\u0000\u0000\u0000\u1514\u14e1\u0001\u0000\u0000\u0000\u1514\u14e3"+
56010 		"\u0001\u0000\u0000\u0000\u1514\u14e6\u0001\u0000\u0000\u0000\u1514\u14e9"+
56011 		"\u0001\u0000\u0000\u0000\u1514\u14eb\u0001\u0000\u0000\u0000\u1514\u14ed"+
56012 		"\u0001\u0000\u0000\u0000\u1514\u14ee\u0001\u0000\u0000\u0000\u1514\u14fd"+
56013 		"\u0001\u0000\u0000\u0000\u1514\u1500\u0001\u0000\u0000\u0000\u1514\u1502"+
56014 		"\u0001\u0000\u0000\u0000\u1514\u1504\u0001\u0000\u0000\u0000\u1514\u1505"+
56015 		"\u0001\u0000\u0000\u0000\u1514\u1507\u0001\u0000\u0000\u0000\u1514\u1511"+
56016 		"\u0001\u0000\u0000\u0000\u1515\u02f5\u0001\u0000\u0000\u0000\u1516\u1517"+
56017 		"\u0005\'\u0000\u0000\u1517\u1518\u0005\u01bc\u0000\u0000\u1518\u154d\u0005"+
56018 		"\'\u0000\u0000\u1519\u151a\u0005\'\u0000\u0000\u151a\u151b\u0005\u01bd"+
56019 		"\u0000\u0000\u151b\u154d\u0005\'\u0000\u0000\u151c\u151d\u0005\'\u0000"+
56020 		"\u0000\u151d\u151e\u0005\u01be\u0000\u0000\u151e\u154d\u0005\'\u0000\u0000"+
56021 		"\u151f\u1520\u0005\'\u0000\u0000\u1520\u1521\u0005\u01bf\u0000\u0000\u1521"+
56022 		"\u154d\u0005\'\u0000\u0000\u1522\u1523\u0005\'\u0000\u0000\u1523\u1524"+
56023 		"\u0005\u01c0\u0000\u0000\u1524\u154d\u0005\'\u0000\u0000\u1525\u1526\u0005"+
56024 		"\'\u0000\u0000\u1526\u1527\u0005\u01c1\u0000\u0000\u1527\u154d\u0005\'"+
56025 		"\u0000\u0000\u1528\u1529\u0005\'\u0000\u0000\u1529\u152a\u0005\u01c2\u0000"+
56026 		"\u0000\u152a\u154d\u0005\'\u0000\u0000\u152b\u152c\u0005\'\u0000\u0000"+
56027 		"\u152c\u152d\u0005\u01c3\u0000\u0000\u152d\u154d\u0005\'\u0000\u0000\u152e"+
56028 		"\u152f\u0005\'\u0000\u0000\u152f\u1530\u0005\u01c4\u0000\u0000\u1530\u154d"+
56029 		"\u0005\'\u0000\u0000\u1531\u1532\u0005\'\u0000\u0000\u1532\u1533\u0005"+
56030 		"\u01c5\u0000\u0000\u1533\u154d\u0005\'\u0000\u0000\u1534\u1535\u0005\'"+
56031 		"\u0000\u0000\u1535\u1536\u0005\u01c6\u0000\u0000\u1536\u154d\u0005\'\u0000"+
56032 		"\u0000\u1537\u1538\u0005\'\u0000\u0000\u1538\u1539\u0005\u01c7\u0000\u0000"+
56033 		"\u1539\u154d\u0005\'\u0000\u0000\u153a\u153b\u0005\'\u0000\u0000\u153b"+
56034 		"\u153c\u0005\u01c8\u0000\u0000\u153c\u154d\u0005\'\u0000\u0000\u153d\u153e"+
56035 		"\u0005\'\u0000\u0000\u153e\u153f\u0005\u01c9\u0000\u0000\u153f\u154d\u0005"+
56036 		"\'\u0000\u0000\u1540\u1541\u0005\'\u0000\u0000\u1541\u1542\u0005\u01ca"+
56037 		"\u0000\u0000\u1542\u154d\u0005\'\u0000\u0000\u1543\u1544\u0005\'\u0000"+
56038 		"\u0000\u1544\u1545\u0005\u01cb\u0000\u0000\u1545\u154d\u0005\'\u0000\u0000"+
56039 		"\u1546\u1547\u0005\'\u0000\u0000\u1547\u1548\u0005\u01cc\u0000\u0000\u1548"+
56040 		"\u154d\u0005\'\u0000\u0000\u1549\u154a\u0005\'\u0000\u0000\u154a\u154b"+
56041 		"\u0005\u01cd\u0000\u0000\u154b\u154d\u0005\'\u0000\u0000\u154c\u1516\u0001"+
56042 		"\u0000\u0000\u0000\u154c\u1519\u0001\u0000\u0000\u0000\u154c\u151c\u0001"+
56043 		"\u0000\u0000\u0000\u154c\u151f\u0001\u0000\u0000\u0000\u154c\u1522\u0001"+
56044 		"\u0000\u0000\u0000\u154c\u1525\u0001\u0000\u0000\u0000\u154c\u1528\u0001"+
56045 		"\u0000\u0000\u0000\u154c\u152b\u0001\u0000\u0000\u0000\u154c\u152e\u0001"+
56046 		"\u0000\u0000\u0000\u154c\u1531\u0001\u0000\u0000\u0000\u154c\u1534\u0001"+
56047 		"\u0000\u0000\u0000\u154c\u1537\u0001\u0000\u0000\u0000\u154c\u153a\u0001"+
56048 		"\u0000\u0000\u0000\u154c\u153d\u0001\u0000\u0000\u0000\u154c\u1540\u0001"+
56049 		"\u0000\u0000\u0000\u154c\u1543\u0001\u0000\u0000\u0000\u154c\u1546\u0001"+
56050 		"\u0000\u0000\u0000\u154c\u1549\u0001\u0000\u0000\u0000\u154d\u02f7\u0001"+
56051 		"\u0000\u0000\u0000\u154e\u1552\u0005f\u0000\u0000\u154f\u1553\u0005\u029f"+
56052 		"\u0000\u0000\u1550\u1553\u0003\u02fa\u017d\u0000\u1551\u1553\u0003\u02fe"+
56053 		"\u017f\u0000\u1552\u154f\u0001\u0000\u0000\u0000\u1552\u1550\u0001\u0000"+
56054 		"\u0000\u0000\u1552\u1551\u0001\u0000\u0000\u0000\u1553\u02f9\u0001\u0000"+
56055 		"\u0000\u0000\u1554\u158f\u0005\u014c\u0000\u0000\u1555\u155a\u0005\u02a0"+
56056 		"\u0000\u0000\u1556\u1557\u0005\u001f\u0000\u0000\u1557\u1558\u0003\u001c"+
56057 		"\u000e\u0000\u1558\u1559\u0005 \u0000\u0000\u1559\u155b\u0001\u0000\u0000"+
56058 		"\u0000\u155a\u1556\u0001\u0000\u0000\u0000\u155a\u155b\u0001\u0000\u0000"+
56059 		"\u0000\u155b\u155e\u0001\u0000\u0000\u0000\u155c\u155e\u0005\u00f2\u0000"+
56060 		"\u0000\u155d\u1555\u0001\u0000\u0000\u0000\u155d\u155c\u0001\u0000\u0000"+
56061 		"\u0000\u155e\u1574\u0001\u0000\u0000\u0000\u155f\u156b\u0003\u02fc\u017e"+
56062 		"\u0000\u1560\u1569\u0005%\u0000\u0000\u1561\u156a\u0005\u02a1\u0000\u0000"+
56063 		"\u1562\u1567\u0005\u02a2\u0000\u0000\u1563\u1564\u0005\u001f\u0000\u0000"+
56064 		"\u1564\u1565\u0003\u001c\u000e\u0000\u1565\u1566\u0005 \u0000\u0000\u1566"+
56065 		"\u1568\u0001\u0000\u0000\u0000\u1567\u1563\u0001\u0000\u0000\u0000\u1567"+
56066 		"\u1568\u0001\u0000\u0000\u0000\u1568\u156a\u0001\u0000\u0000\u0000\u1569"+
56067 		"\u1561\u0001\u0000\u0000\u0000\u1569\u1562\u0001\u0000\u0000\u0000\u156a"+
56068 		"\u156c\u0001\u0000\u0000\u0000\u156b\u1560\u0001\u0000\u0000\u0000\u156b"+
56069 		"\u156c\u0001\u0000\u0000\u0000\u156c\u1572\u0001\u0000\u0000\u0000\u156d"+
56070 		"\u156e\u0005%\u0000\u0000\u156e\u1570\u0005\u02a3\u0000\u0000\u156f\u1571"+
56071 		"\u0007Q\u0000\u0000\u1570\u156f\u0001\u0000\u0000\u0000\u1570\u1571\u0001"+
56072 		"\u0000\u0000\u0000\u1571\u1573\u0001\u0000\u0000\u0000\u1572\u156d\u0001"+
56073 		"\u0000\u0000\u0000\u1572\u1573\u0001\u0000\u0000\u0000\u1573\u1575\u0001"+
56074 		"\u0000\u0000\u0000\u1574\u155f\u0001\u0000\u0000\u0000\u1574\u1575\u0001"+
56075 		"\u0000\u0000\u0000\u1575\u1590\u0001\u0000\u0000\u0000\u1576\u157c\u0005"+
56076 		"\u02a6\u0000\u0000\u1577\u157a\u0003\u02fc\u017e\u0000\u1578\u1579\u0005"+
56077 		"%\u0000\u0000\u1579\u157b\u0005\u02a1\u0000\u0000\u157a\u1578\u0001\u0000"+
56078 		"\u0000\u0000\u157a\u157b\u0001\u0000\u0000\u0000\u157b\u157d\u0001\u0000"+
56079 		"\u0000\u0000\u157c\u1577\u0001\u0000\u0000\u0000\u157c\u157d\u0001\u0000"+
56080 		"\u0000\u0000\u157d\u1590\u0001\u0000\u0000\u0000\u157e\u1583\u0005\u02a7"+
56081 		"\u0000\u0000\u157f\u1580\u0005\u001f\u0000\u0000\u1580\u1581\u0003\u001c"+
56082 		"\u000e\u0000\u1581\u1582\u0005 \u0000\u0000\u1582\u1584\u0001\u0000\u0000"+
56083 		"\u0000\u1583\u157f\u0001\u0000\u0000\u0000\u1583\u1584\u0001\u0000\u0000"+
56084 		"\u0000\u1584\u158d\u0001\u0000\u0000\u0000\u1585\u158b\u0003\u02fc\u017e"+
56085 		"\u0000\u1586\u1587\u0005%\u0000\u0000\u1587\u1589\u0005\u02a3\u0000\u0000"+
56086 		"\u1588\u158a\u0007Q\u0000\u0000\u1589\u1588\u0001\u0000\u0000\u0000\u1589"+
56087 		"\u158a\u0001\u0000\u0000\u0000\u158a\u158c\u0001\u0000\u0000\u0000\u158b"+
56088 		"\u1586\u0001\u0000\u0000\u0000\u158b\u158c\u0001\u0000\u0000\u0000\u158c"+
56089 		"\u158e\u0001\u0000\u0000\u0000\u158d\u1585\u0001\u0000\u0000\u0000\u158d"+
56090 		"\u158e\u0001\u0000\u0000\u0000\u158e\u1590\u0001\u0000\u0000\u0000\u158f"+
56091 		"\u155d\u0001\u0000\u0000\u0000\u158f\u1576\u0001\u0000\u0000\u0000\u158f"+
56092 		"\u157e\u0001\u0000\u0000\u0000\u1590\u02fb\u0001\u0000\u0000\u0000\u1591"+
56093 		"\u1592\u0005%\u0000\u0000\u1592\u1593\u0005\u00d9\u0000\u0000\u1593\u1595"+
56094 		"\u0005\u02a8\u0000\u0000\u1594\u1591\u0001\u0000\u0000\u0000\u1594\u1595"+
56095 		"\u0001\u0000\u0000\u0000\u1595\u1598\u0001\u0000\u0000\u0000\u1596\u1597"+
56096 		"\u0005%\u0000\u0000\u1597\u1599\u0005\u00b0\u0000\u0000\u1598\u1596\u0001"+
56097 		"\u0000\u0000\u0000\u1598\u1599\u0001\u0000\u0000\u0000\u1599\u15a2\u0001"+
56098 		"\u0000\u0000\u0000\u159a\u159b\u0005%\u0000\u0000\u159b\u15a0\u0005\u02a9"+
56099 		"\u0000\u0000\u159c\u159d\u0005\u001f\u0000\u0000\u159d\u159e\u0003\u001c"+
56100 		"\u000e\u0000\u159e\u159f\u0005 \u0000\u0000\u159f\u15a1\u0001\u0000\u0000"+
56101 		"\u0000\u15a0\u159c\u0001\u0000\u0000\u0000\u15a0\u15a1\u0001\u0000\u0000"+
56102 		"\u0000\u15a1\u15a3\u0001\u0000\u0000\u0000\u15a2\u159a\u0001\u0000\u0000"+
56103 		"\u0000\u15a2\u15a3\u0001\u0000\u0000\u0000\u15a3\u02fd\u0001\u0000\u0000"+
56104 		"\u0000\u15a4\u15a5\u0005\u02aa\u0000\u0000\u15a5\u15b8\u0007R\u0000\u0000"+
56105 		"\u15a6\u15a7\u0005%\u0000\u0000\u15a7\u15ac\u0005\u02a9\u0000\u0000\u15a8"+
56106 		"\u15a9\u0005\u001f\u0000\u0000\u15a9\u15aa\u0003\u001c\u000e\u0000\u15aa"+
56107 		"\u15ab\u0005 \u0000\u0000\u15ab\u15ad\u0001\u0000\u0000\u0000\u15ac\u15a8"+
56108 		"\u0001\u0000\u0000\u0000\u15ac\u15ad\u0001\u0000\u0000\u0000\u15ad\u15af"+
56109 		"\u0001\u0000\u0000\u0000\u15ae\u15a6\u0001\u0000\u0000\u0000\u15ae\u15af"+
56110 		"\u0001\u0000\u0000\u0000\u15af\u15b2\u0001\u0000\u0000\u0000\u15b0\u15b1"+
56111 		"\u0005%\u0000\u0000\u15b1\u15b3\u0005\u02ab\u0000\u0000\u15b2\u15b0\u0001"+
56112 		"\u0000\u0000\u0000\u15b2\u15b3\u0001\u0000\u0000\u0000\u15b3\u15b6\u0001"+
56113 		"\u0000\u0000\u0000\u15b4\u15b5\u0005%\u0000\u0000\u15b5\u15b7\u0005\u02ac"+
56114 		"\u0000\u0000\u15b6\u15b4\u0001\u0000\u0000\u0000\u15b6\u15b7\u0001\u0000"+
56115 		"\u0000\u0000\u15b7\u15b9\u0001\u0000\u0000\u0000\u15b8\u15ae\u0001\u0000"+
56116 		"\u0000\u0000\u15b8\u15b9\u0001\u0000\u0000\u0000\u15b9\u02ff\u0001\u0000"+
56117 		"\u0000\u0000\u15ba\u15bf\u0005M\u0000\u0000\u15bb\u15bd\u0003\u0302\u0181"+
56118 		"\u0000\u15bc\u15be\u0005%\u0000\u0000\u15bd\u15bc\u0001\u0000\u0000\u0000"+
56119 		"\u15bd\u15be\u0001\u0000\u0000\u0000\u15be\u15c0\u0001\u0000\u0000\u0000"+
56120 		"\u15bf\u15bb\u0001\u0000\u0000\u0000\u15bf\u15c0\u0001\u0000\u0000\u0000"+
56121 		"\u15c0\u15c2\u0001\u0000\u0000\u0000\u15c1\u15c3\u0003\u02e6\u0173\u0000"+
56122 		"\u15c2\u15c1\u0001\u0000\u0000\u0000\u15c2\u15c3\u0001\u0000\u0000\u0000"+
56123 		"\u15c3\u0301\u0001\u0000\u0000\u0000\u15c4\u15c5\u0005\u02ad\u0000\u0000"+
56124 		"\u15c5\u15c6\u0005\u001f\u0000\u0000\u15c6\u15cb\u0003\u0304\u0182\u0000"+
56125 		"\u15c7\u15c8\u0005%\u0000\u0000\u15c8\u15ca\u0003\u0304\u0182\u0000\u15c9"+
56126 		"\u15c7\u0001\u0000\u0000\u0000\u15ca\u15cd\u0001\u0000\u0000\u0000\u15cb"+
56127 		"\u15c9\u0001\u0000\u0000\u0000\u15cb\u15cc\u0001\u0000\u0000\u0000\u15cc"+
56128 		"\u15ce\u0001\u0000\u0000\u0000\u15cd\u15cb\u0001\u0000\u0000\u0000\u15ce"+
56129 		"\u15cf\u0005 \u0000\u0000\u15cf\u0303\u0001\u0000\u0000\u0000\u15d0\u15d1"+
56130 		"\u0003\u0306\u0183\u0000\u15d1\u15d2\u0005`\u0000\u0000\u15d2\u15d3\u0003"+
56131 		"\u0308\u0184\u0000\u15d3\u15d6\u0001\u0000\u0000\u0000\u15d4\u15d6\u0003"+
56132 		"\u030a\u0185\u0000\u15d5\u15d0\u0001\u0000\u0000\u0000\u15d5\u15d4\u0001"+
56133 		"\u0000\u0000\u0000\u15d6\u0305\u0001\u0000\u0000\u0000\u15d7\u15d8\u0003"+
56134 		"\u001c\u000e\u0000\u15d8\u0307\u0001\u0000\u0000\u0000\u15d9\u15da\u0003"+
56135 		"*\u0015\u0000\u15da\u0309\u0001\u0000\u0000\u0000\u15db\u15dc\u0005\u009a"+
56136 		"\u0000\u0000\u15dc\u15dd\u0003\u0306\u0183\u0000\u15dd\u030b\u0001\u0000"+
56137 		"\u0000\u0000\u15de\u15e1\u00057\u0000\u0000\u15df\u15e2\u0003\u030e\u0187"+
56138 		"\u0000\u15e0\u15e2\u0003\u0310\u0188\u0000\u15e1\u15df\u0001\u0000\u0000"+
56139 		"\u0000\u15e1\u15e0\u0001\u0000\u0000\u0000\u15e2\u030d\u0001\u0000\u0000"+
56140 		"\u0000\u15e3\u15e6\u0003\u0312\u0189\u0000\u15e4\u15e5\u0005a\u0000\u0000"+
56141 		"\u15e5\u15e7\u0003\u0314\u018a\u0000\u15e6\u15e4\u0001\u0000\u0000\u0000"+
56142 		"\u15e6\u15e7\u0001\u0000\u0000\u0000\u15e7\u15e8\u0001\u0000\u0000\u0000"+
56143 		"\u15e8\u15e9\u0005g\u0000\u0000\u15e9\u15ee\u0003\u031c\u018e\u0000\u15ea"+
56144 		"\u15eb\u0005%\u0000\u0000\u15eb\u15ed\u0003\u031c\u018e\u0000\u15ec\u15ea"+
56145 		"\u0001\u0000\u0000\u0000\u15ed\u15f0\u0001\u0000\u0000\u0000\u15ee\u15ec"+
56146 		"\u0001\u0000\u0000\u0000\u15ee\u15ef\u0001\u0000\u0000\u0000\u15ef\u15f4"+
56147 		"\u0001\u0000\u0000\u0000\u15f0\u15ee\u0001\u0000\u0000\u0000\u15f1\u15f2"+
56148 		"\u0005M\u0000\u0000\u15f2\u15f3\u00057\u0000\u0000\u15f3\u15f5\u0005\u00e9"+
56149 		"\u0000\u0000\u15f4\u15f1\u0001\u0000\u0000\u0000\u15f4\u15f5\u0001\u0000"+
56150 		"\u0000\u0000\u15f5\u15f8\u0001\u0000\u0000\u0000\u15f6\u15f7\u0005`\u0000"+
56151 		"\u0000\u15f7\u15f9\u0003\u031c\u018e\u0000\u15f8\u15f6\u0001\u0000\u0000"+
56152 		"\u0000\u15f8\u15f9\u0001\u0000\u0000\u0000\u15f9\u030f\u0001\u0000\u0000"+
56153 		"\u0000\u15fa\u15fd\u0003\u0316\u018b\u0000\u15fb\u15fc\u0005a\u0000\u0000"+
56154 		"\u15fc\u15fe\u0003\u0318\u018c\u0000\u15fd\u15fb\u0001\u0000\u0000\u0000"+
56155 		"\u15fd\u15fe\u0001\u0000\u0000\u0000\u15fe\u15ff\u0001\u0000\u0000\u0000"+
56156 		"\u15ff\u1600\u0005g\u0000\u0000\u1600\u1605\u0003\u031c\u018e\u0000\u1601"+
56157 		"\u1602\u0005%\u0000\u0000\u1602\u1604\u0003\u031c\u018e\u0000\u1603\u1601"+
56158 		"\u0001\u0000\u0000\u0000\u1604\u1607\u0001\u0000\u0000\u0000\u1605\u1603"+
56159 		"\u0001\u0000\u0000\u0000\u1605\u1606\u0001\u0000\u0000\u0000\u1606\u160b"+
56160 		"\u0001\u0000\u0000\u0000\u1607\u1605\u0001\u0000\u0000\u0000\u1608\u1609"+
56161 		"\u0005M\u0000\u0000\u1609\u160a\u00057\u0000\u0000\u160a\u160c\u0005\u00e9"+
56162 		"\u0000\u0000\u160b\u1608\u0001\u0000\u0000\u0000\u160b\u160c\u0001\u0000"+
56163 		"\u0000\u0000\u160c\u0311\u0001\u0000\u0000\u0000\u160d\u160f\u0003\u032c"+
56164 		"\u0196\u0000\u160e\u1610\u0003P(\u0000\u160f\u160e\u0001\u0000\u0000\u0000"+
56165 		"\u160f\u1610\u0001\u0000\u0000\u0000\u1610\u1618\u0001\u0000\u0000\u0000"+
56166 		"\u1611\u1612\u0005%\u0000\u0000\u1612\u1614\u0003\u032c\u0196\u0000\u1613"+
56167 		"\u1615\u0003P(\u0000\u1614\u1613\u0001\u0000\u0000\u0000\u1614\u1615\u0001"+
56168 		"\u0000\u0000\u0000\u1615\u1617\u0001\u0000\u0000\u0000\u1616\u1611\u0001"+
56169 		"\u0000\u0000\u0000\u1617\u161a\u0001\u0000\u0000\u0000\u1618\u1616\u0001"+
56170 		"\u0000\u0000\u0000\u1618\u1619\u0001\u0000\u0000\u0000\u1619\u0313\u0001"+
56171 		"\u0000\u0000\u0000\u161a\u1618\u0001\u0000\u0000\u0000\u161b\u161c\u0003"+
56172 		"\u036a\u01b5\u0000\u161c\u161d\u0005\u000e\u0000\u0000\u161d\u161e\u0005"+
56173 		"\u000e\u0000\u0000\u161e\u1620\u0001\u0000\u0000\u0000\u161f\u161b\u0001"+
56174 		"\u0000\u0000\u0000\u161f\u1620\u0001\u0000\u0000\u0000\u1620\u1621\u0001"+
56175 		"\u0000\u0000\u0000\u1621\u1622\u0003\u031a\u018d\u0000\u1622\u0315\u0001"+
56176 		"\u0000\u0000\u0000\u1623\u1628\u0003\u032c\u0196\u0000\u1624\u1625\u0005"+
56177 		"%\u0000\u0000\u1625\u1627\u0003\u032c\u0196\u0000\u1626\u1624\u0001\u0000"+
56178 		"\u0000\u0000\u1627\u162a\u0001\u0000\u0000\u0000\u1628\u1626\u0001\u0000"+
56179 		"\u0000\u0000\u1628\u1629\u0001\u0000\u0000\u0000\u1629\u0317\u0001\u0000"+
56180 		"\u0000\u0000\u162a\u1628\u0001\u0000\u0000\u0000\u162b\u162c\u0003\u036c"+
56181 		"\u01b6\u0000\u162c\u162d\u0005\u000e\u0000\u0000\u162d\u162e\u0005\u000e"+
56182 		"\u0000\u0000\u162e\u1630\u0001\u0000\u0000\u0000\u162f\u162b\u0001\u0000"+
56183 		"\u0000\u0000\u162f\u1630\u0001\u0000\u0000\u0000\u1630\u1631\u0001\u0000"+
56184 		"\u0000\u0000\u1631\u1632\u0003\u031a\u018d\u0000\u1632\u0319\u0001\u0000"+
56185 		"\u0000\u0000\u1633\u1634\u0003L&\u0000\u1634\u1635\u0005\u0014\u0000\u0000"+
56186 		"\u1635\u1637\u0001\u0000\u0000\u0000\u1636\u1633\u0001\u0000\u0000\u0000"+
56187 		"\u1636\u1637\u0001\u0000\u0000\u0000\u1637\u1638\u0001\u0000\u0000\u0000"+
56188 		"\u1638\u1639\u0003N\'\u0000\u1639\u031b\u0001\u0000\u0000\u0000\u163a"+
56189 		"\u163b\u0003\u038a\u01c5\u0000\u163b\u031d\u0001\u0000\u0000\u0000\u163c"+
56190 		"\u1642\u00058\u0000\u0000\u163d\u163f\u0003\u032a\u0195\u0000\u163e\u163d"+
56191 		"\u0001\u0000\u0000\u0000\u163e\u163f\u0001\u0000\u0000\u0000\u163f\u1640"+
56192 		"\u0001\u0000\u0000\u0000\u1640\u1643\u0003\u0320\u0190\u0000\u1641\u1643"+
56193 		"\u0003\u0322\u0191\u0000\u1642\u163e\u0001\u0000\u0000\u0000\u1642\u1641"+
56194 		"\u0001\u0000\u0000\u0000\u1643\u031f\u0001\u0000\u0000\u0000\u1644\u1647"+
56195 		"\u0003\u0312\u0189\u0000\u1645\u1646\u0005a\u0000\u0000\u1646\u1648\u0003"+
56196 		"\u0314\u018a\u0000\u1647\u1645\u0001\u0000\u0000\u0000\u1647\u1648\u0001"+
56197 		"\u0000\u0000\u0000\u1648\u1649\u0001\u0000\u0000\u0000\u1649\u164a\u0007"+
56198 		"S\u0000\u0000\u164a\u164f\u0003\u031c\u018e\u0000\u164b\u164c\u0005%\u0000"+
56199 		"\u0000\u164c\u164e\u0003\u031c\u018e\u0000\u164d\u164b\u0001\u0000\u0000"+
56200 		"\u0000\u164e\u1651\u0001\u0000\u0000\u0000\u164f\u164d\u0001\u0000\u0000"+
56201 		"\u0000\u164f\u1650\u0001\u0000\u0000\u0000\u1650\u1653\u0001\u0000\u0000"+
56202 		"\u0000\u1651\u164f\u0001\u0000\u0000\u0000\u1652\u1654\u0005\u00e5\u0000"+
56203 		"\u0000\u1653\u1652\u0001\u0000\u0000\u0000\u1653\u1654\u0001\u0000\u0000"+
56204 		"\u0000\u1654\u1657\u0001\u0000\u0000\u0000\u1655\u1656\u0005`\u0000\u0000"+
56205 		"\u1656\u1658\u0003\u031c\u018e\u0000\u1657\u1655\u0001\u0000\u0000\u0000"+
56206 		"\u1657\u1658\u0001\u0000\u0000\u0000\u1658\u0321\u0001\u0000\u0000\u0000"+
56207 		"\u1659\u165c\u0003\u0316\u018b\u0000\u165a\u165b\u0005a\u0000\u0000\u165b"+
56208 		"\u165d\u0003\u0318\u018c\u0000\u165c\u165a\u0001\u0000\u0000\u0000\u165c"+
56209 		"\u165d\u0001\u0000\u0000\u0000\u165d\u165e\u0001\u0000\u0000\u0000\u165e"+
56210 		"\u165f\u0007S\u0000\u0000\u165f\u1664\u0003\u031c\u018e\u0000\u1660\u1661"+
56211 		"\u0005%\u0000\u0000\u1661\u1663\u0003\u031c\u018e\u0000\u1662\u1660\u0001"+
56212 		"\u0000\u0000\u0000\u1663\u1666\u0001\u0000\u0000\u0000\u1664\u1662\u0001"+
56213 		"\u0000\u0000\u0000\u1664\u1665\u0001\u0000\u0000\u0000\u1665\u1668\u0001"+
56214 		"\u0000\u0000\u0000\u1666\u1664\u0001\u0000\u0000\u0000\u1667\u1669\u0005"+
56215 		"\u00e5\u0000\u0000\u1668\u1667\u0001\u0000\u0000\u0000\u1668\u1669\u0001"+
56216 		"\u0000\u0000\u0000\u1669\u0323\u0001\u0000\u0000\u0000\u166a\u166d\u0005"+
56217 		"\u00ff\u0000\u0000\u166b\u166e\u0003\u0326\u0193\u0000\u166c\u166e\u0003"+
56218 		"\u0328\u0194\u0000\u166d\u166b\u0001\u0000\u0000\u0000\u166d\u166c\u0001"+
56219 		"\u0000\u0000\u0000\u166e\u0325\u0001\u0000\u0000\u0000\u166f\u1672\u0003"+
56220 		"\u0312\u0189\u0000\u1670\u1671\u0005a\u0000\u0000\u1671\u1673\u0003\u0314"+
56221 		"\u018a\u0000\u1672\u1670\u0001\u0000\u0000\u0000\u1672\u1673\u0001\u0000"+
56222 		"\u0000\u0000\u1673\u1674\u0001\u0000\u0000\u0000\u1674\u1675\u0005g\u0000"+
56223 		"\u0000\u1675\u167a\u0003\u031c\u018e\u0000\u1676\u1677\u0005%\u0000\u0000"+
56224 		"\u1677\u1679\u0003\u031c\u018e\u0000\u1678\u1676\u0001\u0000\u0000\u0000"+
56225 		"\u1679\u167c\u0001\u0000\u0000\u0000\u167a\u1678\u0001\u0000\u0000\u0000"+
56226 		"\u167a\u167b\u0001\u0000\u0000\u0000\u167b\u167e\u0001\u0000\u0000\u0000"+
56227 		"\u167c\u167a\u0001\u0000\u0000\u0000\u167d\u167f\u0005\u00e5\u0000\u0000"+
56228 		"\u167e\u167d\u0001\u0000\u0000\u0000\u167e\u167f\u0001\u0000\u0000\u0000"+
56229 		"\u167f\u1682\u0001\u0000\u0000\u0000\u1680\u1681\u0005`\u0000\u0000\u1681"+
56230 		"\u1683\u0003\u031c\u018e\u0000\u1682\u1680\u0001\u0000\u0000\u0000\u1682"+
56231 		"\u1683\u0001\u0000\u0000\u0000\u1683\u0327\u0001\u0000\u0000\u0000\u1684"+
56232 		"\u1687\u0003\u0316\u018b\u0000\u1685\u1686\u0005a\u0000\u0000\u1686\u1688"+
56233 		"\u0003\u0318\u018c\u0000\u1687\u1685\u0001\u0000\u0000\u0000\u1687\u1688"+
56234 		"\u0001\u0000\u0000\u0000\u1688\u1689\u0001\u0000\u0000\u0000\u1689\u168a"+
56235 		"\u0005g\u0000\u0000\u168a\u168f\u0003\u031c\u018e\u0000\u168b\u168c\u0005"+
56236 		"%\u0000\u0000\u168c\u168e\u0003\u031c\u018e\u0000\u168d\u168b\u0001\u0000"+
56237 		"\u0000\u0000\u168e\u1691\u0001\u0000\u0000\u0000\u168f\u168d\u0001\u0000"+
56238 		"\u0000\u0000\u168f\u1690\u0001\u0000\u0000\u0000\u1690\u1693\u0001\u0000"+
56239 		"\u0000\u0000\u1691\u168f\u0001\u0000\u0000\u0000\u1692\u1694\u0005\u00e5"+
56240 		"\u0000\u0000\u1693\u1692\u0001\u0000\u0000\u0000\u1693\u1694\u0001\u0000"+
56241 		"\u0000\u0000\u1694\u0329\u0001\u0000\u0000\u0000\u1695\u1696\u00057\u0000"+
56242 		"\u0000\u1696\u1697\u0005\u00e9\u0000\u0000\u1697\u1698\u0005f\u0000\u0000"+
56243 		"\u1698\u032b\u0001\u0000\u0000\u0000\u1699\u169b\u0005r\u0000\u0000\u169a"+
56244 		"\u169c\u0005\u00ea\u0000\u0000\u169b\u169a\u0001\u0000\u0000\u0000\u169b"+
56245 		"\u169c\u0001\u0000\u0000\u0000\u169c\u16b1\u0001\u0000\u0000\u0000\u169d"+
56246 		"\u16b1\u0003\u0358\u01ac\u0000\u169e\u16b1\u0003\u0356\u01ab\u0000\u169f"+
56247 		"\u16b1\u0003\u035a\u01ad\u0000\u16a0\u16b1\u0003\u0352\u01a9\u0000\u16a1"+
56248 		"\u16b1\u0003\u032e\u0197\u0000\u16a2\u16b1\u0003\u0366\u01b3\u0000\u16a3"+
56249 		"\u16b1\u0003\u0334\u019a\u0000\u16a4\u16b1\u0003\u0336\u019b\u0000\u16a5"+
56250 		"\u16b1\u0003\u033e\u019f\u0000\u16a6\u16b1\u0003\u0350\u01a8\u0000\u16a7"+
56251 		"\u16b1\u0003\u035c\u01ae\u0000\u16a8\u16b1\u0003\u0340\u01a0\u0000\u16a9"+
56252 		"\u16b1\u0003\u0342\u01a1\u0000\u16aa\u16b1\u0003\u0330\u0198\u0000\u16ab"+
56253 		"\u16b1\u0003\u0332\u0199\u0000\u16ac\u16b1\u0003\u0344\u01a2\u0000\u16ad"+
56254 		"\u16b1\u0003\u0354\u01aa\u0000\u16ae\u16b1\u0003\u0362\u01b1\u0000\u16af"+
56255 		"\u16b1\u0003\u0364\u01b2\u0000\u16b0\u1699\u0001\u0000\u0000\u0000\u16b0"+
56256 		"\u169d\u0001\u0000\u0000\u0000\u16b0\u169e\u0001\u0000\u0000\u0000\u16b0"+
56257 		"\u169f\u0001\u0000\u0000\u0000\u16b0\u16a0\u0001\u0000\u0000\u0000\u16b0"+
56258 		"\u16a1\u0001\u0000\u0000\u0000\u16b0\u16a2\u0001\u0000\u0000\u0000\u16b0"+
56259 		"\u16a3\u0001\u0000\u0000\u0000\u16b0\u16a4\u0001\u0000\u0000\u0000\u16b0"+
56260 		"\u16a5\u0001\u0000\u0000\u0000\u16b0\u16a6\u0001\u0000\u0000\u0000\u16b0"+
56261 		"\u16a7\u0001\u0000\u0000\u0000\u16b0\u16a8\u0001\u0000\u0000\u0000\u16b0"+
56262 		"\u16a9\u0001\u0000\u0000\u0000\u16b0\u16aa\u0001\u0000\u0000\u0000\u16b0"+
56263 		"\u16ab\u0001\u0000\u0000\u0000\u16b0\u16ac\u0001\u0000\u0000\u0000\u16b0"+
56264 		"\u16ad\u0001\u0000\u0000\u0000\u16b0\u16ae\u0001\u0000\u0000\u0000\u16b0"+
56265 		"\u16af\u0001\u0000\u0000\u0000\u16b1\u032d\u0001\u0000\u0000\u0000\u16b2"+
56266 		"\u16c3\u00053\u0000\u0000\u16b3\u16c3\u0005\u0133\u0000\u0000\u16b4\u16c3"+
56267 		"\u00051\u0000\u0000\u16b5\u16c3\u0005\u012d\u0000\u0000\u16b6\u16c3\u0005"+
56268 		"/\u0000\u0000\u16b7\u16c3\u0005\u013d\u0000\u0000\u16b8\u16c3\u0005\u00eb"+
56269 		"\u0000\u0000\u16b9\u16c3\u0005.\u0000\u0000\u16ba\u16bb\u0005\u0135\u0000"+
56270 		"\u0000\u16bb\u16c3\u0005\u0136\u0000\u0000\u16bc\u16c3\u00050\u0000\u0000"+
56271 		"\u16bd\u16be\u0005J\u0000\u0000\u16be\u16bf\u0005\u013e\u0000\u0000\u16bf"+
56272 		"\u16c3\u0005\u0140\u0000\u0000\u16c0\u16c1\u0005J\u0000\u0000\u16c1\u16c3"+
56273 		"\u0005\u0137\u0000\u0000\u16c2\u16b2\u0001\u0000\u0000\u0000\u16c2\u16b3"+
56274 		"\u0001\u0000\u0000\u0000\u16c2\u16b4\u0001\u0000\u0000\u0000\u16c2\u16b5"+
56275 		"\u0001\u0000\u0000\u0000\u16c2\u16b6\u0001\u0000\u0000\u0000\u16c2\u16b7"+
56276 		"\u0001\u0000\u0000\u0000\u16c2\u16b8\u0001\u0000\u0000\u0000\u16c2\u16b9"+
56277 		"\u0001\u0000\u0000\u0000\u16c2\u16ba\u0001\u0000\u0000\u0000\u16c2\u16bc"+
56278 		"\u0001\u0000\u0000\u0000\u16c2\u16bd\u0001\u0000\u0000\u0000\u16c2\u16c0"+
56279 		"\u0001\u0000\u0000\u0000\u16c3\u032f\u0001\u0000\u0000\u0000\u16c4\u16c5"+
56280 		"\u0005\u0152\u0000\u0000\u16c5\u16c6\u0005\u0153\u0000\u0000\u16c6\u1712"+
56281 		"\u0005\u0154\u0000\u0000\u16c7\u16cd\u00053\u0000\u0000\u16c8\u16ce\u0005"+
56282 		"\u0141\u0000\u0000\u16c9\u16ce\u0005\u0142\u0000\u0000\u16ca\u16ce\u0005"+
56283 		"\u013f\u0000\u0000\u16cb\u16cc\u0005\u013c\u0000\u0000\u16cc\u16ce\u0005"+
56284 		"\u0143\u0000\u0000\u16cd\u16c8\u0001\u0000\u0000\u0000\u16cd\u16c9\u0001"+
56285 		"\u0000\u0000\u0000\u16cd\u16ca\u0001\u0000\u0000\u0000\u16cd\u16cb\u0001"+
56286 		"\u0000\u0000\u0000\u16ce\u1712\u0001\u0000\u0000\u0000\u16cf\u16d0\u0005"+
56287 		"3\u0000\u0000\u16d0\u16e2\u0005s\u0000\u0000\u16d1\u16d2\u0005\u0144\u0000"+
56288 		"\u0000\u16d2\u16e3\u0005v\u0000\u0000\u16d3\u16e3\u0005\u0131\u0000\u0000"+
56289 		"\u16d4\u16e3\u0005\u0145\u0000\u0000\u16d5\u16e3\u0005\u00cc\u0000\u0000"+
56290 		"\u16d6\u16e3\u0005\u0146\u0000\u0000\u16d7\u16d8\u0005\u0147\u0000\u0000"+
56291 		"\u16d8\u16e3\u0005\u0148\u0000\u0000\u16d9\u16da\u0005\u0147\u0000\u0000"+
56292 		"\u16da\u16e3\u0005\u012f\u0000\u0000\u16db\u16dc\u0005\u0149\u0000\u0000"+
56293 		"\u16dc\u16e3\u0005\u013c\u0000\u0000\u16dd\u16e3\u0005\u0111\u0000\u0000"+
56294 		"\u16de\u16df\u0005\u013c\u0000\u0000\u16df\u16e3\u0005\u014a\u0000\u0000"+
56295 		"\u16e0\u16e1\u0005\u013c\u0000\u0000\u16e1\u16e3\u0005\u00ed\u0000\u0000"+
56296 		"\u16e2\u16d1\u0001\u0000\u0000\u0000\u16e2\u16d3\u0001\u0000\u0000\u0000"+
56297 		"\u16e2\u16d4\u0001\u0000\u0000\u0000\u16e2\u16d5\u0001\u0000\u0000\u0000"+
56298 		"\u16e2\u16d6\u0001\u0000\u0000\u0000\u16e2\u16d7\u0001\u0000\u0000\u0000"+
56299 		"\u16e2\u16d9\u0001\u0000\u0000\u0000\u16e2\u16db\u0001\u0000\u0000\u0000"+
56300 		"\u16e2\u16dd\u0001\u0000\u0000\u0000\u16e2\u16de\u0001\u0000\u0000\u0000"+
56301 		"\u16e2\u16e0\u0001\u0000\u0000\u0000\u16e3\u1712\u0001\u0000\u0000\u0000"+
56302 		"\u16e4\u16e5\u0005\u014f\u0000\u0000\u16e5\u1712\u0005\u013c\u0000\u0000"+
56303 		"\u16e6\u16e7\u0005\u0130\u0000\u0000\u16e7\u16e8\u0005s\u0000\u0000\u16e8"+
56304 		"\u1712\u0005\u00cc\u0000\u0000\u16e9\u16ea\u0005\u0130\u0000\u0000\u16ea"+
56305 		"\u1712\u0005\u00a4\u0000\u0000\u16eb\u16ec\u0005\u0133\u0000\u0000\u16ec"+
56306 		"\u1712\u0005\u013c\u0000\u0000\u16ed\u16ee\u00052\u0000\u0000\u16ee\u16ef"+
56307 		"\u0005s\u0000\u0000\u16ef\u1712\u0005\u00cc\u0000\u0000\u16f0\u16fc\u0005"+
56308 		"2\u0000\u0000\u16f1\u16f2\u0005\u0144\u0000\u0000\u16f2\u16fd\u0005v\u0000"+
56309 		"\u0000\u16f3\u16f4\u0005\u014b\u0000\u0000\u16f4\u16f5\u0005\u0147\u0000"+
56310 		"\u0000\u16f5\u16fd\u0005\u0148\u0000\u0000\u16f6\u16fd\u0005\u0146\u0000"+
56311 		"\u0000\u16f7\u16f8\u0005\u013c\u0000\u0000\u16f8\u16fd\u0005\u00ed\u0000"+
56312 		"\u0000\u16f9\u16fa\u0005\u013f\u0000\u0000\u16fa\u16fb\u0005\u0147\u0000"+
56313 		"\u0000\u16fb\u16fd\u0005\u0148\u0000\u0000\u16fc\u16f1\u0001\u0000\u0000"+
56314 		"\u0000\u16fc\u16f3\u0001\u0000\u0000\u0000\u16fc\u16f6\u0001\u0000\u0000"+
56315 		"\u0000\u16fc\u16f7\u0001\u0000\u0000\u0000\u16fc\u16f9\u0001\u0000\u0000"+
56316 		"\u0000\u16fd\u1712\u0001\u0000\u0000\u0000\u16fe\u16ff\u0005\u0150\u0000"+
56317 		"\u0000\u16ff\u1700\u0005\u0151\u0000\u0000\u1700\u1712\u0005\u0139\u0000"+
56318 		"\u0000\u1701\u1702\u0005\u014d\u0000\u0000\u1702\u1703\u0005s\u0000\u0000"+
56319 		"\u1703\u1712\u0005\u0111\u0000\u0000\u1704\u1705\u0005.\u0000\u0000\u1705"+
56320 		"\u1706\u0005r\u0000\u0000\u1706\u1707\u0005\u00ec\u0000\u0000\u1707\u1712"+
56321 		"\u0005\u014e\u0000\u0000\u1708\u1712\u0005\u0156\u0000\u0000\u1709\u170a"+
56322 		"\u0005\u0155\u0000\u0000\u170a\u1712\u0005\u0139\u0000\u0000\u170b\u170c"+
56323 		"\u0005J\u0000\u0000\u170c\u170d\u0005s\u0000\u0000\u170d\u1712\u0007T"+
56324 		"\u0000\u0000\u170e\u170f\u0005J\u0000\u0000\u170f\u1710\u0005\u013c\u0000"+
56325 		"\u0000\u1710\u1712\u0005\u0143\u0000\u0000\u1711\u16c4\u0001\u0000\u0000"+
56326 		"\u0000\u1711\u16c7\u0001\u0000\u0000\u0000\u1711\u16cf\u0001\u0000\u0000"+
56327 		"\u0000\u1711\u16e4\u0001\u0000\u0000\u0000\u1711\u16e6\u0001\u0000\u0000"+
56328 		"\u0000\u1711\u16e9\u0001\u0000\u0000\u0000\u1711\u16eb\u0001\u0000\u0000"+
56329 		"\u0000\u1711\u16ed\u0001\u0000\u0000\u0000\u1711\u16f0\u0001\u0000\u0000"+
56330 		"\u0000\u1711\u16fe\u0001\u0000\u0000\u0000\u1711\u1701\u0001\u0000\u0000"+
56331 		"\u0000\u1711\u1704\u0001\u0000\u0000\u0000\u1711\u1708\u0001\u0000\u0000"+
56332 		"\u0000\u1711\u1709\u0001\u0000\u0000\u0000\u1711\u170b\u0001\u0000\u0000"+
56333 		"\u0000\u1711\u170e\u0001\u0000\u0000\u0000\u1712\u0331\u0001\u0000\u0000"+
56334 		"\u0000\u1713\u1715\u0005\u0133\u0000\u0000\u1714\u1716\u0005\u013c\u0000"+
56335 		"\u0000\u1715\u1714\u0001\u0000\u0000\u0000\u1715\u1716\u0001\u0000\u0000"+
56336 		"\u0000\u1716\u1726\u0001\u0000\u0000\u0000\u1717\u1726\u0005\u014d\u0000"+
56337 		"\u0000\u1718\u171a\u0005J\u0000\u0000\u1719\u171b\u0005s\u0000\u0000\u171a"+
56338 		"\u1719\u0001\u0000\u0000\u0000\u171a\u171b\u0001\u0000\u0000\u0000\u171b"+
56339 		"\u171c\u0001\u0000\u0000\u0000\u171c\u1726\u0005\u0137\u0000\u0000\u171d"+
56340 		"\u1726\u00053\u0000\u0000\u171e\u171f\u00053\u0000\u0000\u171f\u1723\u0005"+
56341 		"s\u0000\u0000\u1720\u1724\u0005\u0111\u0000\u0000\u1721\u1722\u0005\u013c"+
56342 		"\u0000\u0000\u1722\u1724\u0005\u00ed\u0000\u0000\u1723\u1720\u0001\u0000"+
56343 		"\u0000\u0000\u1723\u1721\u0001\u0000\u0000\u0000\u1724\u1726\u0001\u0000"+
56344 		"\u0000\u0000\u1725\u1713\u0001\u0000\u0000\u0000\u1725\u1717\u0001\u0000"+
56345 		"\u0000\u0000\u1725\u1718\u0001\u0000\u0000\u0000\u1725\u171d\u0001\u0000"+
56346 		"\u0000\u0000\u1725\u171e\u0001\u0000\u0000\u0000\u1726\u0333\u0001\u0000"+
56347 		"\u0000\u0000\u1727\u1728\u0005\u0152\u0000\u0000\u1728\u1729\u0005\u00cc"+
56348 		"\u0000\u0000\u1729\u172a\u0005\u0153\u0000\u0000\u172a\u17cf\u0005\u0154"+
56349 		"\u0000\u0000\u172b\u17cf\u00053\u0000\u0000\u172c\u172d\u00053\u0000\u0000"+
56350 		"\u172d\u17cf\u0005\u013f\u0000\u0000\u172e\u172f\u00053\u0000\u0000\u172f"+
56351 		"\u1769\u0005s\u0000\u0000\u1730\u1731\u0005\u0138\u0000\u0000\u1731\u176a"+
56352 		"\u0005\u00ed\u0000\u0000\u1732\u176a\u0005\u0139\u0000\u0000\u1733\u1738"+
56353 		"\u0005\u013a\u0000\u0000\u1734\u1738\u0005\u013b\u0000\u0000\u1735\u1736"+
56354 		"\u0005<\u0000\u0000\u1736\u1738\u0005\u015d\u0000\u0000\u1737\u1733\u0001"+
56355 		"\u0000\u0000\u0000\u1737\u1734\u0001\u0000\u0000\u0000\u1737\u1735\u0001"+
56356 		"\u0000\u0000\u0000\u1738\u1739\u0001\u0000\u0000\u0000\u1739\u176a\u0005"+
56357 		"C\u0000\u0000\u173a\u176a\u0005\u015b\u0000\u0000\u173b\u176a\u0005\u0131"+
56358 		"\u0000\u0000\u173c\u173d\u0005<\u0000\u0000\u173d\u173e\u0005\u015e\u0000"+
56359 		"\u0000\u173e\u173f\u0005C\u0000\u0000\u173f\u176a\u0005\u0137\u0000\u0000"+
56360 		"\u1740\u176a\u0005\u015c\u0000\u0000\u1741\u174b\u0005\u00cc\u0000\u0000"+
56361 		"\u1742\u174c\u0005\u014a\u0000\u0000\u1743\u1744\u0005\u014b\u0000\u0000"+
56362 		"\u1744\u174c\u0005G\u0000\u0000\u1745\u1746\u0005\u0147\u0000\u0000\u1746"+
56363 		"\u174c\u0005\u0148\u0000\u0000\u1747\u1748\u0005\u0147\u0000\u0000\u1748"+
56364 		"\u174c\u0005\u012f\u0000\u0000\u1749\u174a\u0005\u0157\u0000\u0000\u174a"+
56365 		"\u174c\u0005\u0158\u0000\u0000\u174b\u1742\u0001\u0000\u0000\u0000\u174b"+
56366 		"\u1743\u0001\u0000\u0000\u0000\u174b\u1745\u0001\u0000\u0000\u0000\u174b"+
56367 		"\u1747\u0001\u0000\u0000\u0000\u174b\u1749\u0001\u0000\u0000\u0000\u174b"+
56368 		"\u174c\u0001\u0000\u0000\u0000\u174c\u176a\u0001\u0000\u0000\u0000\u174d"+
56369 		"\u176a\u0005\u0159\u0000\u0000\u174e\u174f\u0005\u0147\u0000\u0000\u174f"+
56370 		"\u176a\u0007U\u0000\u0000\u1750\u1756\u0005\u0150\u0000\u0000\u1751\u1752"+
56371 		"\u0005\u015f\u0000\u0000\u1752\u1757\u0005\u0160\u0000\u0000\u1753\u1754"+
56372 		"\u0005\u0161\u0000\u0000\u1754\u1757\u0005\u0162\u0000\u0000\u1755\u1757"+
56373 		"\u0005\u0163\u0000\u0000\u1756\u1751\u0001\u0000\u0000\u0000\u1756\u1753"+
56374 		"\u0001\u0000\u0000\u0000\u1756\u1755\u0001\u0000\u0000\u0000\u1757\u176a"+
56375 		"\u0001\u0000\u0000\u0000\u1758\u1759\u0005\u0164\u0000\u0000\u1759\u176a"+
56376 		"\u0005\u0132\u0000\u0000\u175a\u176a\u0005\u0165\u0000\u0000\u175b\u175c"+
56377 		"\u0005\u0167\u0000\u0000\u175c\u176a\u0005\u00b0\u0000\u0000\u175d\u175e"+
56378 		"\u0005\u0168\u0000\u0000\u175e\u175f\u0005\u015a\u0000\u0000\u175f\u176a"+
56379 		"\u0005\u0169\u0000\u0000\u1760\u176a\u0005\u00ed\u0000\u0000\u1761\u176a"+
56380 		"\u0005\u016a\u0000\u0000\u1762\u1763\u0005\u013c\u0000\u0000\u1763\u176a"+
56381 		"\u0005\u014a\u0000\u0000\u1764\u176a\u00056\u0000\u0000\u1765\u1766\u0005"+
56382 		"\u016b\u0000\u0000\u1766\u176a\u0005\u016c\u0000\u0000\u1767\u176a\u0005"+
56383 		"\u015a\u0000\u0000\u1768\u176a\u0005\u00ec\u0000\u0000\u1769\u1730\u0001"+
56384 		"\u0000\u0000\u0000\u1769\u1732\u0001\u0000\u0000\u0000\u1769\u1737\u0001"+
56385 		"\u0000\u0000\u0000\u1769\u173a\u0001\u0000\u0000\u0000\u1769\u173b\u0001"+
56386 		"\u0000\u0000\u0000\u1769\u173c\u0001\u0000\u0000\u0000\u1769\u1740\u0001"+
56387 		"\u0000\u0000\u0000\u1769\u1741\u0001\u0000\u0000\u0000\u1769\u174d\u0001"+
56388 		"\u0000\u0000\u0000\u1769\u174e\u0001\u0000\u0000\u0000\u1769\u1750\u0001"+
56389 		"\u0000\u0000\u0000\u1769\u1758\u0001\u0000\u0000\u0000\u1769\u175a\u0001"+
56390 		"\u0000\u0000\u0000\u1769\u175b\u0001\u0000\u0000\u0000\u1769\u175d\u0001"+
56391 		"\u0000\u0000\u0000\u1769\u1760\u0001\u0000\u0000\u0000\u1769\u1761\u0001"+
56392 		"\u0000\u0000\u0000\u1769\u1762\u0001\u0000\u0000\u0000\u1769\u1764\u0001"+
56393 		"\u0000\u0000\u0000\u1769\u1765\u0001\u0000\u0000\u0000\u1769\u1767\u0001"+
56394 		"\u0000\u0000\u0000\u1769\u1768\u0001\u0000\u0000\u0000\u176a\u17cf\u0001"+
56395 		"\u0000\u0000\u0000\u176b\u176d\u0005\u014f\u0000\u0000\u176c\u176e\u0005"+
56396 		"\u013c\u0000\u0000\u176d\u176c\u0001\u0000\u0000\u0000\u176d\u176e\u0001"+
56397 		"\u0000\u0000\u0000\u176e\u17cf\u0001\u0000\u0000\u0000\u176f\u1770\u0005"+
56398 		"\u0174\u0000\u0000\u1770\u17cf\u0007V\u0000\u0000\u1771\u17cf\u0005\u017a"+
56399 		"\u0000\u0000\u1772\u17cf\u0005\u0130\u0000\u0000\u1773\u1775\u0005\u0130"+
56400 		"\u0000\u0000\u1774\u1776\u0005\u0123\u0000\u0000\u1775\u1774\u0001\u0000"+
56401 		"\u0000\u0000\u1775\u1776\u0001\u0000\u0000\u0000\u1776\u17cf\u0001\u0000"+
56402 		"\u0000\u0000\u1777\u1779\u0005\u0133\u0000\u0000\u1778\u177a\u0005\u013c"+
56403 		"\u0000\u0000\u1779\u1778\u0001\u0000\u0000\u0000\u1779\u177a\u0001\u0000"+
56404 		"\u0000\u0000\u177a\u17cf\u0001\u0000\u0000\u0000\u177b\u17a0\u00052\u0000"+
56405 		"\u0000\u177c\u17a1\u0005\u016d\u0000\u0000\u177d\u17a1\u0005\u0139\u0000"+
56406 		"\u0000\u177e\u177f\u0007W\u0000\u0000\u177f\u17a1\u0005C\u0000\u0000\u1780"+
56407 		"\u17a1\u0005\u015b\u0000\u0000\u1781\u17a1\u0005\u015c\u0000\u0000\u1782"+
56408 		"\u17a1\u0005\u00cc\u0000\u0000\u1783\u1785\u0005\u00cc\u0000\u0000\u1784"+
56409 		"\u1783\u0001\u0000\u0000\u0000\u1784\u1785\u0001\u0000\u0000\u0000\u1785"+
56410 		"\u1786\u0001\u0000\u0000\u0000\u1786\u1787\u0005\u014b\u0000\u0000\u1787"+
56411 		"\u1788\u0005\u0147\u0000\u0000\u1788\u17a1\u0005\u0148\u0000\u0000\u1789"+
56412 		"\u17a1\u0005\u009a\u0000\u0000\u178a\u178b\u0005\u0164\u0000\u0000\u178b"+
56413 		"\u17a1\u0005\u0132\u0000\u0000\u178c\u17a1\u0005F\u0000\u0000\u178d\u178e"+
56414 		"\u0005\u0167\u0000\u0000\u178e\u17a1\u0005\u00b0\u0000\u0000\u178f\u17a1"+
56415 		"\u0005H\u0000\u0000\u1790\u17a1\u0005\u016e\u0000\u0000\u1791\u1792\u0005"+
56416 		"\u0168\u0000\u0000\u1792\u1793\u0005\u015a\u0000\u0000\u1793\u17a1\u0005"+
56417 		"\u0169\u0000\u0000\u1794\u17a1\u0005\u00ed\u0000\u0000\u1795\u17a1\u0005"+
56418 		"\u016a\u0000\u0000\u1796\u17a1\u0005\u016f\u0000\u0000\u1797\u17a1\u0005"+
56419 		"6\u0000\u0000\u1798\u17a1\u0005\u015a\u0000\u0000\u1799\u17a1\u0005\u0170"+
56420 		"\u0000\u0000\u179a\u17a1\u0005;\u0000\u0000\u179b\u17a1\u0005\u00b0\u0000"+
56421 		"\u0000\u179c\u17a1\u0005J\u0000\u0000\u179d\u179e\u0005\u014c\u0000\u0000"+
56422 		"\u179e\u179f\u00056\u0000\u0000\u179f\u17a1\u0005\u0171\u0000\u0000\u17a0"+
56423 		"\u177c\u0001\u0000\u0000\u0000\u17a0\u177d\u0001\u0000\u0000\u0000\u17a0"+
56424 		"\u177e\u0001\u0000\u0000\u0000\u17a0\u1780\u0001\u0000\u0000\u0000\u17a0"+
56425 		"\u1781\u0001\u0000\u0000\u0000\u17a0\u1782\u0001\u0000\u0000\u0000\u17a0"+
56426 		"\u1784\u0001\u0000\u0000\u0000\u17a0\u1789\u0001\u0000\u0000\u0000\u17a0"+
56427 		"\u178a\u0001\u0000\u0000\u0000\u17a0\u178c\u0001\u0000\u0000\u0000\u17a0"+
56428 		"\u178d\u0001\u0000\u0000\u0000\u17a0\u178f\u0001\u0000\u0000\u0000\u17a0"+
56429 		"\u1790\u0001\u0000\u0000\u0000\u17a0\u1791\u0001\u0000\u0000\u0000\u17a0"+
56430 		"\u1794\u0001\u0000\u0000\u0000\u17a0\u1795\u0001\u0000\u0000\u0000\u17a0"+
56431 		"\u1796\u0001\u0000\u0000\u0000\u17a0\u1797\u0001\u0000\u0000\u0000\u17a0"+
56432 		"\u1798\u0001\u0000\u0000\u0000\u17a0\u1799\u0001\u0000\u0000\u0000\u17a0"+
56433 		"\u179a\u0001\u0000\u0000\u0000\u17a0\u179b\u0001\u0000\u0000\u0000\u17a0"+
56434 		"\u179c\u0001\u0000\u0000\u0000\u17a0\u179d\u0001\u0000\u0000\u0000\u17a1"+
56435 		"\u17cf\u0001\u0000\u0000\u0000\u17a2\u17cf\u00051\u0000\u0000\u17a3\u17cf"+
56436 		"\u0005\u012d\u0000\u0000\u17a4\u17a6\u0005\u012d\u0000\u0000\u17a5\u17a7"+
56437 		"\u0005s\u0000\u0000\u17a6\u17a5\u0001\u0000\u0000\u0000\u17a6\u17a7\u0001"+
56438 		"\u0000\u0000\u0000\u17a7\u17a8\u0001\u0000\u0000\u0000\u17a8\u17a9\u0005"+
56439 		"\u0150\u0000\u0000\u17a9\u17cf\u0005\u0172\u0000\u0000\u17aa\u17cf\u0005"+
56440 		"/\u0000\u0000\u17ab\u17ac\u0005\u0173\u0000\u0000\u17ac\u17ad\u0005\u00cc"+
56441 		"\u0000\u0000\u17ad\u17cf\u0005\u0131\u0000\u0000\u17ae\u17cf\u0005\u00eb"+
56442 		"\u0000\u0000\u17af\u17cf\u0005.\u0000\u0000\u17b0\u17cf\u0005\u0176\u0000"+
56443 		"\u0000\u17b1\u17b2\u0005\u0177\u0000\u0000\u17b2\u17b3\u0005\u0178\u0000"+
56444 		"\u0000\u17b3\u17cf\u0005\u0179\u0000\u0000\u17b4\u17b5\u0005\u0135\u0000"+
56445 		"\u0000\u17b5\u17cf\u0005\u0136\u0000\u0000\u17b6\u17cf\u0005\u0166\u0000"+
56446 		"\u0000\u17b7\u17cf\u00050\u0000\u0000\u17b8\u17b9\u0005J\u0000\u0000\u17b9"+
56447 		"\u17ba\u0005s\u0000\u0000\u17ba\u17bb\u0005<\u0000\u0000\u17bb\u17bc\u0007"+
56448 		"X\u0000\u0000\u17bc\u17bd\u0005C\u0000\u0000\u17bd\u17cf\u0005\u0137\u0000"+
56449 		"\u0000\u17be\u17bf\u00052\u0000\u0000\u17bf\u17c3\u0005s\u0000\u0000\u17c0"+
56450 		"\u17c4\u0005\u00cc\u0000\u0000\u17c1\u17c2\u0005\u0150\u0000\u0000\u17c2"+
56451 		"\u17c4\u0005\u0163\u0000\u0000\u17c3\u17c0\u0001\u0000\u0000\u0000\u17c3"+
56452 		"\u17c1\u0001\u0000\u0000\u0000\u17c4\u17cf\u0001\u0000\u0000\u0000\u17c5"+
56453 		"\u17c6\u0005J\u0000\u0000\u17c6\u17c7\u0007Y\u0000\u0000\u17c7\u17cf\u0005"+
56454 		"\u0143\u0000\u0000\u17c8\u17ca\u0005J\u0000\u0000\u17c9\u17cb\u0005s\u0000"+
56455 		"\u0000\u17ca\u17c9\u0001\u0000\u0000\u0000\u17ca\u17cb\u0001\u0000\u0000"+
56456 		"\u0000\u17cb\u17cc\u0001\u0000\u0000\u0000\u17cc\u17cf\u0005\u0137\u0000"+
56457 		"\u0000\u17cd\u17cf\u0001\u0000\u0000\u0000\u17ce\u1727\u0001\u0000\u0000"+
56458 		"\u0000\u17ce\u172b\u0001\u0000\u0000\u0000\u17ce\u172c\u0001\u0000\u0000"+
56459 		"\u0000\u17ce\u172e\u0001\u0000\u0000\u0000\u17ce\u176b\u0001\u0000\u0000"+
56460 		"\u0000\u17ce\u176f\u0001\u0000\u0000\u0000\u17ce\u1771\u0001\u0000\u0000"+
56461 		"\u0000\u17ce\u1772\u0001\u0000\u0000\u0000\u17ce\u1773\u0001\u0000\u0000"+
56462 		"\u0000\u17ce\u1777\u0001\u0000\u0000\u0000\u17ce\u177b\u0001\u0000\u0000"+
56463 		"\u0000\u17ce\u17a2\u0001\u0000\u0000\u0000\u17ce\u17a3\u0001\u0000\u0000"+
56464 		"\u0000\u17ce\u17a4\u0001\u0000\u0000\u0000\u17ce\u17aa\u0001\u0000\u0000"+
56465 		"\u0000\u17ce\u17ab\u0001\u0000\u0000\u0000\u17ce\u17ae\u0001\u0000\u0000"+
56466 		"\u0000\u17ce\u17af\u0001\u0000\u0000\u0000\u17ce\u17b0\u0001\u0000\u0000"+
56467 		"\u0000\u17ce\u17b1\u0001\u0000\u0000\u0000\u17ce\u17b4\u0001\u0000\u0000"+
56468 		"\u0000\u17ce\u17b6\u0001\u0000\u0000\u0000\u17ce\u17b7\u0001\u0000\u0000"+
56469 		"\u0000\u17ce\u17b8\u0001\u0000\u0000\u0000\u17ce\u17be\u0001\u0000\u0000"+
56470 		"\u0000\u17ce\u17c5\u0001\u0000\u0000\u0000\u17ce\u17c8\u0001\u0000\u0000"+
56471 		"\u0000\u17ce\u17cd\u0001\u0000\u0000\u0000\u17cf\u0335\u0001\u0000\u0000"+
56472 		"\u0000\u17d0\u17d4\u0003\u0338\u019c\u0000\u17d1\u17d4\u0003\u033a\u019d"+
56473 		"\u0000\u17d2\u17d4\u0003\u033c\u019e\u0000\u17d3\u17d0\u0001\u0000\u0000"+
56474 		"\u0000\u17d3\u17d1\u0001\u0000\u0000\u0000\u17d3\u17d2\u0001\u0000\u0000"+
56475 		"\u0000\u17d4\u0337\u0001\u0000\u0000\u0000\u17d5\u17de\u0005\u0133\u0000"+
56476 		"\u0000\u17d6\u17de\u0005\u014d\u0000\u0000\u17d7\u17de\u00053\u0000\u0000"+
56477 		"\u17d8\u17d9\u0005J\u0000\u0000\u17d9\u17de\u0005\u0137\u0000\u0000\u17da"+
56478 		"\u17db\u00053\u0000\u0000\u17db\u17dc\u0005s\u0000\u0000\u17dc\u17de\u0005"+
56479 		"\u00ec\u0000\u0000\u17dd\u17d5\u0001\u0000\u0000\u0000\u17dd\u17d6\u0001"+
56480 		"\u0000\u0000\u0000\u17dd\u17d7\u0001\u0000\u0000\u0000\u17dd\u17d8\u0001"+
56481 		"\u0000\u0000\u0000\u17dd\u17da\u0001\u0000\u0000\u0000\u17de\u0339\u0001"+
56482 		"\u0000\u0000\u0000\u17df\u17e9\u0005\u0133\u0000\u0000\u17e0\u17e1\u0005"+
56483 		"\u0135\u0000\u0000\u17e1\u17e9\u0005\u0136\u0000\u0000\u17e2\u17e9\u0005"+
56484 		"3\u0000\u0000\u17e3\u17e4\u0005J\u0000\u0000\u17e4\u17e9\u0005\u0137\u0000"+
56485 		"\u0000\u17e5\u17e6\u00053\u0000\u0000\u17e6\u17e7\u0005s\u0000\u0000\u17e7"+
56486 		"\u17e9\u0005\u00ed\u0000\u0000\u17e8\u17df\u0001\u0000\u0000\u0000\u17e8"+
56487 		"\u17e0\u0001\u0000\u0000\u0000\u17e8\u17e2\u0001\u0000\u0000\u0000\u17e8"+
56488 		"\u17e3\u0001\u0000\u0000\u0000\u17e8\u17e5\u0001\u0000\u0000\u0000\u17e9"+
56489 		"\u033b\u0001\u0000\u0000\u0000\u17ea\u17f3\u0005\u0133\u0000\u0000\u17eb"+
56490 		"\u17f3\u00053\u0000\u0000\u17ec\u17ed\u0005J\u0000\u0000\u17ed\u17f3\u0005"+
56491 		"\u0137\u0000\u0000\u17ee\u17ef\u00053\u0000\u0000\u17ef\u17f0\u0005s\u0000"+
56492 		"\u0000\u17f0\u17f1\u0005\u0138\u0000\u0000\u17f1\u17f3\u0005\u00ed\u0000"+
56493 		"\u0000\u17f2\u17ea\u0001\u0000\u0000\u0000\u17f2\u17eb\u0001\u0000\u0000"+
56494 		"\u0000\u17f2\u17ec\u0001\u0000\u0000\u0000\u17f2\u17ee\u0001\u0000\u0000"+
56495 		"\u0000\u17f3\u033d\u0001\u0000\u0000\u0000\u17f4\u17fc\u0005\u0133\u0000"+
56496 		"\u0000\u17f5\u17f6\u0005\u0135\u0000\u0000\u17f6\u17fc\u0005\u0136\u0000"+
56497 		"\u0000\u17f7\u17fc\u00053\u0000\u0000\u17f8\u17fc\u0005\u00eb\u0000\u0000"+
56498 		"\u17f9\u17fa\u0005J\u0000\u0000\u17fa\u17fc\u0005\u0137\u0000\u0000\u17fb"+
56499 		"\u17f4\u0001\u0000\u0000\u0000\u17fb\u17f5\u0001\u0000\u0000\u0000\u17fb"+
56500 		"\u17f7\u0001\u0000\u0000\u0000\u17fb\u17f8\u0001\u0000\u0000\u0000\u17fb"+
56501 		"\u17f9\u0001\u0000\u0000\u0000\u17fc\u033f\u0001\u0000\u0000\u0000\u17fd"+
56502 		"\u1812\u00053\u0000\u0000\u17fe\u1812\u0005\u0133\u0000\u0000\u17ff\u1800"+
56503 		"\u00052\u0000\u0000\u1800\u1812\u0005\u017b\u0000\u0000\u1801\u1812\u0005"+
56504 		"1\u0000\u0000\u1802\u1812\u0005\u012d\u0000\u0000\u1803\u1812\u0005/\u0000"+
56505 		"\u0000\u1804\u1812\u0005\u00eb\u0000\u0000\u1805\u1812\u0005.\u0000\u0000"+
56506 		"\u1806\u1807\u0005\u0135\u0000\u0000\u1807\u1812\u0005\u0136\u0000\u0000"+
56507 		"\u1808\u1812\u00050\u0000\u0000\u1809\u180a\u0005J\u0000\u0000\u180a\u180b"+
56508 		"\u0005\u013e\u0000\u0000\u180b\u1812\u0005\u0140\u0000\u0000\u180c\u180d"+
56509 		"\u0005J\u0000\u0000\u180d\u1812\u0005\u0137\u0000\u0000\u180e\u180f\u0005"+
56510 		"3\u0000\u0000\u180f\u1810\u0005s\u0000\u0000\u1810\u1812\u00056\u0000"+
56511 		"\u0000\u1811\u17fd\u0001\u0000\u0000\u0000\u1811\u17fe\u0001\u0000\u0000"+
56512 		"\u0000\u1811\u17ff\u0001\u0000\u0000\u0000\u1811\u1801\u0001\u0000\u0000"+
56513 		"\u0000\u1811\u1802\u0001\u0000\u0000\u0000\u1811\u1803\u0001\u0000\u0000"+
56514 		"\u0000\u1811\u1804\u0001\u0000\u0000\u0000\u1811\u1805\u0001\u0000\u0000"+
56515 		"\u0000\u1811\u1806\u0001\u0000\u0000\u0000\u1811\u1808\u0001\u0000\u0000"+
56516 		"\u0000\u1811\u1809\u0001\u0000\u0000\u0000\u1811\u180c\u0001\u0000\u0000"+
56517 		"\u0000\u1811\u180e\u0001\u0000\u0000\u0000\u1812\u0341\u0001\u0000\u0000"+
56518 		"\u0000\u1813\u181f\u00053\u0000\u0000\u1814\u181f\u0005\u0133\u0000\u0000"+
56519 		"\u1815\u181f\u0005\u00eb\u0000\u0000\u1816\u1817\u0005\u0135\u0000\u0000"+
56520 		"\u1817\u181f\u0005\u0136\u0000\u0000\u1818\u1819\u0005J\u0000\u0000\u1819"+
56521 		"\u181f\u0005\u0137\u0000\u0000\u181a\u181b\u00053\u0000\u0000\u181b\u181c"+
56522 		"\u0005s\u0000\u0000\u181c\u181d\u0005\u0164\u0000\u0000\u181d\u181f\u0005"+
56523 		"\u0132\u0000\u0000\u181e\u1813\u0001\u0000\u0000\u0000\u181e\u1814\u0001"+
56524 		"\u0000\u0000\u0000\u181e\u1815\u0001\u0000\u0000\u0000\u181e\u1816\u0001"+
56525 		"\u0000\u0000\u0000\u181e\u1818\u0001\u0000\u0000\u0000\u181e\u181a\u0001"+
56526 		"\u0000\u0000\u0000\u181f\u0343\u0001\u0000\u0000\u0000\u1820\u1826\u0003"+
56527 		"\u0346\u01a3\u0000\u1821\u1826\u0003\u0348\u01a4\u0000\u1822\u1826\u0003"+
56528 		"\u034a\u01a5\u0000\u1823\u1826\u0003\u034c\u01a6\u0000\u1824\u1826\u0003"+
56529 		"\u034e\u01a7\u0000\u1825\u1820\u0001\u0000\u0000\u0000\u1825\u1821\u0001"+
56530 		"\u0000\u0000\u0000\u1825\u1822\u0001\u0000\u0000\u0000\u1825\u1823\u0001"+
56531 		"\u0000\u0000\u0000\u1825\u1824\u0001\u0000\u0000\u0000\u1826\u0345\u0001"+
56532 		"\u0000\u0000\u0000\u1827\u1832\u0005\u0133\u0000\u0000\u1828\u1829\u0005"+
56533 		"\u0135\u0000\u0000\u1829\u1832\u0005\u0136\u0000\u0000\u182a\u1832\u0005"+
56534 		"3\u0000\u0000\u182b\u1832\u0005\u00eb\u0000\u0000\u182c\u182d\u0005J\u0000"+
56535 		"\u0000\u182d\u1832\u0005\u0137\u0000\u0000\u182e\u182f\u00053\u0000\u0000"+
56536 		"\u182f\u1830\u0005s\u0000\u0000\u1830\u1832\u0005\u015c\u0000\u0000\u1831"+
56537 		"\u1827\u0001\u0000\u0000\u0000\u1831\u1828\u0001\u0000\u0000\u0000\u1831"+
56538 		"\u182a\u0001\u0000\u0000\u0000\u1831\u182b\u0001\u0000\u0000\u0000\u1831"+
56539 		"\u182c\u0001\u0000\u0000\u0000\u1831\u182e\u0001\u0000\u0000\u0000\u1832"+
56540 		"\u0347\u0001\u0000\u0000\u0000\u1833\u183f\u0005\u0133\u0000\u0000\u1834"+
56541 		"\u1835\u0005\u0135\u0000\u0000\u1835\u183f\u0005\u0136\u0000\u0000\u1836"+
56542 		"\u183f\u00053\u0000\u0000\u1837\u183f\u0005\u00eb\u0000\u0000\u1838\u1839"+
56543 		"\u0005J\u0000\u0000\u1839\u183f\u0005\u0137\u0000\u0000\u183a\u183b\u0005"+
56544 		"3\u0000\u0000\u183b\u183c\u0005s\u0000\u0000\u183c\u183d\u0005\u0167\u0000"+
56545 		"\u0000\u183d\u183f\u0005\u00b0\u0000\u0000\u183e\u1833\u0001\u0000\u0000"+
56546 		"\u0000\u183e\u1834\u0001\u0000\u0000\u0000\u183e\u1836\u0001\u0000\u0000"+
56547 		"\u0000\u183e\u1837\u0001\u0000\u0000\u0000\u183e\u1838\u0001\u0000\u0000"+
56548 		"\u0000\u183e\u183a\u0001\u0000\u0000\u0000\u183f\u0349\u0001\u0000\u0000"+
56549 		"\u0000\u1840\u184c\u0005\u0133\u0000\u0000\u1841\u1842\u0005\u0135\u0000"+
56550 		"\u0000\u1842\u184c\u0005\u0136\u0000\u0000\u1843\u184c\u00053\u0000\u0000"+
56551 		"\u1844\u1845\u0005J\u0000\u0000\u1845\u184c\u0005\u0137\u0000\u0000\u1846"+
56552 		"\u1847\u00053\u0000\u0000\u1847\u1848\u0005s\u0000\u0000\u1848\u1849\u0005"+
56553 		"\u0168\u0000\u0000\u1849\u184a\u0005\u015a\u0000\u0000\u184a\u184c\u0005"+
56554 		"\u0169\u0000\u0000\u184b\u1840\u0001\u0000\u0000\u0000\u184b\u1841\u0001"+
56555 		"\u0000\u0000\u0000\u184b\u1843\u0001\u0000\u0000\u0000\u184b\u1844\u0001"+
56556 		"\u0000\u0000\u0000\u184b\u1846\u0001\u0000\u0000\u0000\u184c\u034b\u0001"+
56557 		"\u0000\u0000\u0000\u184d\u1857\u0005\u0133\u0000\u0000\u184e\u184f\u0005"+
56558 		"\u0135\u0000\u0000\u184f\u1857\u0005\u0136\u0000\u0000\u1850\u1857\u0005"+
56559 		"3\u0000\u0000\u1851\u1852\u0005J\u0000\u0000\u1852\u1857\u0005\u0137\u0000"+
56560 		"\u0000\u1853\u1854\u00053\u0000\u0000\u1854\u1855\u0005s\u0000\u0000\u1855"+
56561 		"\u1857\u0005\u016a\u0000\u0000\u1856\u184d\u0001\u0000\u0000\u0000\u1856"+
56562 		"\u184e\u0001\u0000\u0000\u0000\u1856\u1850\u0001\u0000\u0000\u0000\u1856"+
56563 		"\u1851\u0001\u0000\u0000\u0000\u1856\u1853\u0001\u0000\u0000\u0000\u1857"+
56564 		"\u034d\u0001\u0000\u0000\u0000\u1858\u1863\u0005\u0133\u0000\u0000\u1859"+
56565 		"\u185a\u0005\u0135\u0000\u0000\u185a\u1863\u0005\u0136\u0000\u0000\u185b"+
56566 		"\u1863\u0005\u0294\u0000\u0000\u185c\u1863\u00053\u0000\u0000\u185d\u185e"+
56567 		"\u0005J\u0000\u0000\u185e\u1863\u0005\u0137\u0000\u0000\u185f\u1860\u0005"+
56568 		"3\u0000\u0000\u1860\u1861\u0005s\u0000\u0000\u1861\u1863\u0005\u015a\u0000"+
56569 		"\u0000\u1862\u1858\u0001\u0000\u0000\u0000\u1862\u1859\u0001\u0000\u0000"+
56570 		"\u0000\u1862\u185b\u0001\u0000\u0000\u0000\u1862\u185c\u0001\u0000\u0000"+
56571 		"\u0000\u1862\u185d\u0001\u0000\u0000\u0000\u1862\u185f\u0001\u0000\u0000"+
56572 		"\u0000\u1863\u034f\u0001\u0000\u0000\u0000\u1864\u1875\u00053\u0000\u0000"+
56573 		"\u1865\u1875\u0005\u0130\u0000\u0000\u1866\u1868\u0005\u0133\u0000\u0000"+
56574 		"\u1867\u1869\u0005\u013c\u0000\u0000\u1868\u1867\u0001\u0000\u0000\u0000"+
56575 		"\u1868\u1869\u0001\u0000\u0000\u0000\u1869\u1875\u0001\u0000\u0000\u0000"+
56576 		"\u186a\u186b\u0005\u0135\u0000\u0000\u186b\u1875\u0005\u0136\u0000\u0000"+
56577 		"\u186c\u186e\u0005J\u0000\u0000\u186d\u186f\u0005s\u0000\u0000\u186e\u186d"+
56578 		"\u0001\u0000\u0000\u0000\u186e\u186f\u0001\u0000\u0000\u0000\u186f\u1870"+
56579 		"\u0001\u0000\u0000\u0000\u1870\u1875\u0005\u0137\u0000\u0000\u1871\u1872"+
56580 		"\u00053\u0000\u0000\u1872\u1873\u0005s\u0000\u0000\u1873\u1875\u0005\u0146"+
56581 		"\u0000\u0000\u1874\u1864\u0001\u0000\u0000\u0000\u1874\u1865\u0001\u0000"+
56582 		"\u0000\u0000\u1874\u1866\u0001\u0000\u0000\u0000\u1874\u186a\u0001\u0000"+
56583 		"\u0000\u0000\u1874\u186c\u0001\u0000\u0000\u0000\u1874\u1871\u0001\u0000"+
56584 		"\u0000\u0000\u1875\u0351\u0001\u0000\u0000\u0000\u1876\u1881\u0005\u0133"+
56585 		"\u0000\u0000\u1877\u1878\u0005\u0135\u0000\u0000\u1878\u1881\u0005\u0136"+
56586 		"\u0000\u0000\u1879\u1881\u00053\u0000\u0000\u187a\u1881\u0005\u00eb\u0000"+
56587 		"\u0000\u187b\u187c\u0005J\u0000\u0000\u187c\u1881\u0005\u0137\u0000\u0000"+
56588 		"\u187d\u187e\u00053\u0000\u0000\u187e\u187f\u0005s\u0000\u0000\u187f\u1881"+
56589 		"\u0005\u015b\u0000\u0000\u1880\u1876\u0001\u0000\u0000\u0000\u1880\u1877"+
56590 		"\u0001\u0000\u0000\u0000\u1880\u1879\u0001\u0000\u0000\u0000\u1880\u187a"+
56591 		"\u0001\u0000\u0000\u0000\u1880\u187b\u0001\u0000\u0000\u0000\u1880\u187d"+
56592 		"\u0001\u0000\u0000\u0000\u1881\u0353\u0001\u0000\u0000\u0000\u1882\u188e"+
56593 		"\u00053\u0000\u0000\u1883\u188e\u0005\u0133\u0000\u0000\u1884\u188e\u0005"+
56594 		"\u00eb\u0000\u0000\u1885\u1886\u0005\u0135\u0000\u0000\u1886\u188e\u0005"+
56595 		"\u0136\u0000\u0000\u1887\u1888\u0005J\u0000\u0000\u1888\u188e\u0005\u0137"+
56596 		"\u0000\u0000\u1889\u188a\u00053\u0000\u0000\u188a\u188b\u0005s\u0000\u0000"+
56597 		"\u188b\u188c\u0005\u013a\u0000\u0000\u188c\u188e\u0005C\u0000\u0000\u188d"+
56598 		"\u1882\u0001\u0000\u0000\u0000\u188d\u1883\u0001\u0000\u0000\u0000\u188d"+
56599 		"\u1884\u0001\u0000\u0000\u0000\u188d\u1885\u0001\u0000\u0000\u0000\u188d"+
56600 		"\u1887\u0001\u0000\u0000\u0000\u188d\u1889\u0001\u0000\u0000\u0000\u188e"+
56601 		"\u0355\u0001\u0000\u0000\u0000\u188f\u189b\u0005\u0133\u0000\u0000\u1890"+
56602 		"\u1891\u0005\u0135\u0000\u0000\u1891\u189b\u0005\u0136\u0000\u0000\u1892"+
56603 		"\u189b\u00053\u0000\u0000\u1893\u189b\u0005\u00eb\u0000\u0000\u1894\u1895"+
56604 		"\u0005J\u0000\u0000\u1895\u189b\u0005\u0137\u0000\u0000\u1896\u1897\u0005"+
56605 		"3\u0000\u0000\u1897\u1898\u0005s\u0000\u0000\u1898\u1899\u0005\u013b\u0000"+
56606 		"\u0000\u1899\u189b\u0005C\u0000\u0000\u189a\u188f\u0001\u0000\u0000\u0000"+
56607 		"\u189a\u1890\u0001\u0000\u0000\u0000\u189a\u1892\u0001\u0000\u0000\u0000"+
56608 		"\u189a\u1893\u0001\u0000\u0000\u0000\u189a\u1894\u0001\u0000\u0000\u0000"+
56609 		"\u189a\u1896\u0001\u0000\u0000\u0000\u189b\u0357\u0001\u0000\u0000\u0000"+
56610 		"\u189c\u18a7\u0005\u0133\u0000\u0000\u189d\u189e\u0005\u0135\u0000\u0000"+
56611 		"\u189e\u18a7\u0005\u0136\u0000\u0000\u189f\u18a7\u00053\u0000\u0000\u18a0"+
56612 		"\u18a7\u0005\u00eb\u0000\u0000\u18a1\u18a2\u0005J\u0000\u0000\u18a2\u18a7"+
56613 		"\u0005\u0137\u0000\u0000\u18a3\u18a4\u00053\u0000\u0000\u18a4\u18a5\u0005"+
56614 		"s\u0000\u0000\u18a5\u18a7\u0005\u0139\u0000\u0000\u18a6\u189c\u0001\u0000"+
56615 		"\u0000\u0000\u18a6\u189d\u0001\u0000\u0000\u0000\u18a6\u189f\u0001\u0000"+
56616 		"\u0000\u0000\u18a6\u18a0\u0001\u0000\u0000\u0000\u18a6\u18a1\u0001\u0000"+
56617 		"\u0000\u0000\u18a6\u18a3\u0001\u0000\u0000\u0000\u18a7\u0359\u0001\u0000"+
56618 		"\u0000\u0000\u18a8\u18ba\u00053\u0000\u0000\u18a9\u18ba\u0005\u0130\u0000"+
56619 		"\u0000\u18aa\u18ac\u0005\u0133\u0000\u0000\u18ab\u18ad\u0005\u013c\u0000"+
56620 		"\u0000\u18ac\u18ab\u0001\u0000\u0000\u0000\u18ac\u18ad\u0001\u0000\u0000"+
56621 		"\u0000\u18ad\u18ba\u0001\u0000\u0000\u0000\u18ae\u18af\u0005\u0135\u0000"+
56622 		"\u0000\u18af\u18ba\u0005\u0136\u0000\u0000\u18b0\u18b2\u0005J\u0000\u0000"+
56623 		"\u18b1\u18b3\u0005s\u0000\u0000\u18b2\u18b1\u0001\u0000\u0000\u0000\u18b2"+
56624 		"\u18b3\u0001\u0000\u0000\u0000\u18b3\u18b4\u0001\u0000\u0000\u0000\u18b4"+
56625 		"\u18ba\u0005\u0137\u0000\u0000\u18b5\u18b6\u00053\u0000\u0000\u18b6\u18b7"+
56626 		"\u0005s\u0000\u0000\u18b7\u18b8\u0005\u0144\u0000\u0000\u18b8\u18ba\u0005"+
56627 		"v\u0000\u0000\u18b9\u18a8\u0001\u0000\u0000\u0000\u18b9\u18a9\u0001\u0000"+
56628 		"\u0000\u0000\u18b9\u18aa\u0001\u0000\u0000\u0000\u18b9\u18ae\u0001\u0000"+
56629 		"\u0000\u0000\u18b9\u18b0\u0001\u0000\u0000\u0000\u18b9\u18b5\u0001\u0000"+
56630 		"\u0000\u0000\u18ba\u035b\u0001\u0000\u0000\u0000\u18bb\u18be\u0003\u035e"+
56631 		"\u01af\u0000\u18bc\u18be\u0003\u0360\u01b0\u0000\u18bd\u18bb\u0001\u0000"+
56632 		"\u0000\u0000\u18bd\u18bc\u0001\u0000\u0000\u0000\u18be\u035d\u0001\u0000"+
56633 		"\u0000\u0000\u18bf\u18cb\u0005\u0133\u0000\u0000\u18c0\u18c1\u0005\u0135"+
56634 		"\u0000\u0000\u18c1\u18cb\u0005\u0136\u0000\u0000\u18c2\u18cb\u00053\u0000"+
56635 		"\u0000\u18c3\u18cb\u0005\u00eb\u0000\u0000\u18c4\u18c5\u0005J\u0000\u0000"+
56636 		"\u18c5\u18cb\u0005\u0137\u0000\u0000\u18c6\u18c7\u00053\u0000\u0000\u18c7"+
56637 		"\u18c8\u0005s\u0000\u0000\u18c8\u18c9\u0005\u0164\u0000\u0000\u18c9\u18cb"+
56638 		"\u0005\u0132\u0000\u0000\u18ca\u18bf\u0001\u0000\u0000\u0000\u18ca\u18c0"+
56639 		"\u0001\u0000\u0000\u0000\u18ca\u18c2\u0001\u0000\u0000\u0000\u18ca\u18c3"+
56640 		"\u0001\u0000\u0000\u0000\u18ca\u18c4\u0001\u0000\u0000\u0000\u18ca\u18c6"+
56641 		"\u0001\u0000\u0000\u0000\u18cb\u035f\u0001\u0000\u0000\u0000\u18cc\u18d8"+
56642 		"\u00053\u0000\u0000\u18cd\u18d8\u0005\u0133\u0000\u0000\u18ce\u18d8\u0005"+
56643 		"\u00eb\u0000\u0000\u18cf\u18d0\u0005\u0135\u0000\u0000\u18d0\u18d8\u0005"+
56644 		"\u0136\u0000\u0000\u18d1\u18d2\u0005J\u0000\u0000\u18d2\u18d8\u0005\u0137"+
56645 		"\u0000\u0000\u18d3\u18d4\u00053\u0000\u0000\u18d4\u18d5\u0005s\u0000\u0000"+
56646 		"\u18d5\u18d6\u0005\u0164\u0000\u0000\u18d6\u18d8\u0005\u0132\u0000\u0000"+
56647 		"\u18d7\u18cc\u0001\u0000\u0000\u0000\u18d7\u18cd\u0001\u0000\u0000\u0000"+
56648 		"\u18d7\u18ce\u0001\u0000\u0000\u0000\u18d7\u18cf\u0001\u0000\u0000\u0000"+
56649 		"\u18d7\u18d1\u0001\u0000\u0000\u0000\u18d7\u18d3\u0001\u0000\u0000\u0000"+
56650 		"\u18d8\u0361\u0001\u0000\u0000\u0000\u18d9\u18e1\u0005\u0133\u0000\u0000"+
56651 		"\u18da\u18e1\u0005\u012d\u0000\u0000\u18db\u18e1\u0005\u00eb\u0000\u0000"+
56652 		"\u18dc\u18dd\u0005\u0135\u0000\u0000\u18dd\u18e1\u0005\u0136\u0000\u0000"+
56653 		"\u18de\u18df\u0005J\u0000\u0000\u18df\u18e1\u0005\u0137\u0000\u0000\u18e0"+
56654 		"\u18d9\u0001\u0000\u0000\u0000\u18e0\u18da\u0001\u0000\u0000\u0000\u18e0"+
56655 		"\u18db\u0001\u0000\u0000\u0000\u18e0\u18dc\u0001\u0000\u0000\u0000\u18e0"+
56656 		"\u18de\u0001\u0000\u0000\u0000\u18e1\u0363\u0001\u0000\u0000\u0000\u18e2"+
56657 		"\u18eb\u00053\u0000\u0000\u18e3\u18eb\u0005\u0133\u0000\u0000\u18e4\u18eb"+
56658 		"\u0005\u012d\u0000\u0000\u18e5\u18eb\u0005\u00eb\u0000\u0000\u18e6\u18e7"+
56659 		"\u0005\u0135\u0000\u0000\u18e7\u18eb\u0005\u0136\u0000\u0000\u18e8\u18e9"+
56660 		"\u0005J\u0000\u0000\u18e9\u18eb\u0005\u0137\u0000\u0000\u18ea\u18e2\u0001"+
56661 		"\u0000\u0000\u0000\u18ea\u18e3\u0001\u0000\u0000\u0000\u18ea\u18e4\u0001"+
56662 		"\u0000\u0000\u0000\u18ea\u18e5\u0001\u0000\u0000\u0000\u18ea\u18e6\u0001"+
56663 		"\u0000\u0000\u0000\u18ea\u18e8\u0001\u0000\u0000\u0000\u18eb\u0365\u0001"+
56664 		"\u0000\u0000\u0000\u18ec\u18ed\u0007Z\u0000\u0000\u18ed\u0367\u0001\u0000"+
56665 		"\u0000\u0000\u18ee\u18ef\u0005\u02b5\u0000\u0000\u18ef\u18f0\u0005\u000e"+
56666 		"\u0000\u0000\u18f0\u18f1\u0005\u000e\u0000\u0000\u18f1\u0369\u0001\u0000"+
56667 		"\u0000\u0000\u18f2\u191b\u0005\u0139\u0000\u0000\u18f3\u18f4\u0005\u013b"+
56668 		"\u0000\u0000\u18f4\u191b\u0005C\u0000\u0000\u18f5\u18f6\u0005\u0144\u0000"+
56669 		"\u0000\u18f6\u191b\u0005v\u0000\u0000\u18f7\u191b\u0005\u015b\u0000\u0000"+
56670 		"\u18f8\u191b\u0005\u00ec\u0000\u0000\u18f9\u191b\u0005\u00ed\u0000\u0000"+
56671 		"\u18fa\u18fb\u0005\u0138\u0000\u0000\u18fb\u191b\u0005\u00ed\u0000\u0000"+
56672 		"\u18fc\u18fd\u0005\u00cc\u0000\u0000\u18fd\u18fe\u0005\u0157\u0000\u0000"+
56673 		"\u18fe\u191b\u0005\u0145\u0000\u0000\u18ff\u191b\u0005\u0146\u0000\u0000"+
56674 		"\u1900\u1901\u0005\u0164\u0000\u0000\u1901\u191b\u0007[\u0000\u0000\u1902"+
56675 		"\u191b\u0005\u0117\u0000\u0000\u1903\u191b\u00056\u0000\u0000\u1904\u1905"+
56676 		"\u0005\u0291\u0000\u0000\u1905\u1906\u0005\u0292\u0000\u0000\u1906\u191b"+
56677 		"\u0005\u0293\u0000\u0000\u1907\u191b\u0005\u0111\u0000\u0000\u1908\u1909"+
56678 		"\u0005\u013c\u0000\u0000\u1909\u191b\u0005\u00ed\u0000\u0000\u190a\u191b"+
56679 		"\u0005\u015c\u0000\u0000\u190b\u190c\u0005\u0167\u0000\u0000\u190c\u191b"+
56680 		"\u0005\u00b0\u0000\u0000\u190d\u190e\u0005\u0168\u0000\u0000\u190e\u190f"+
56681 		"\u0005\u015a\u0000\u0000\u190f\u191b\u0005\u0169\u0000\u0000\u1910\u191b"+
56682 		"\u0005\u016a\u0000\u0000\u1911\u191b\u0005\u015a\u0000\u0000\u1912\u1913"+
56683 		"\u0005\u013a\u0000\u0000\u1913\u191b\u0005C\u0000\u0000\u1914\u191b\u0005"+
56684 		".\u0000\u0000\u1915\u191b\u0005\u012d\u0000\u0000\u1916\u191b\u0005\u00b0"+
56685 		"\u0000\u0000\u1917\u1918\u0005\u014c\u0000\u0000\u1918\u1919\u00056\u0000"+
56686 		"\u0000\u1919\u191b\u0005\u0171\u0000\u0000\u191a\u18f2\u0001\u0000\u0000"+
56687 		"\u0000\u191a\u18f3\u0001\u0000\u0000\u0000\u191a\u18f5\u0001\u0000\u0000"+
56688 		"\u0000\u191a\u18f7\u0001\u0000\u0000\u0000\u191a\u18f8\u0001\u0000\u0000"+
56689 		"\u0000\u191a\u18f9\u0001\u0000\u0000\u0000\u191a\u18fa\u0001\u0000\u0000"+
56690 		"\u0000\u191a\u18fc\u0001\u0000\u0000\u0000\u191a\u18ff\u0001\u0000\u0000"+
56691 		"\u0000\u191a\u1900\u0001\u0000\u0000\u0000\u191a\u1902\u0001\u0000\u0000"+
56692 		"\u0000\u191a\u1903\u0001\u0000\u0000\u0000\u191a\u1904\u0001\u0000\u0000"+
56693 		"\u0000\u191a\u1907\u0001\u0000\u0000\u0000\u191a\u1908\u0001\u0000\u0000"+
56694 		"\u0000\u191a\u190a\u0001\u0000\u0000\u0000\u191a\u190b\u0001\u0000\u0000"+
56695 		"\u0000\u191a\u190d\u0001\u0000\u0000\u0000\u191a\u1910\u0001\u0000\u0000"+
56696 		"\u0000\u191a\u1911\u0001\u0000\u0000\u0000\u191a\u1912\u0001\u0000\u0000"+
56697 		"\u0000\u191a\u1914\u0001\u0000\u0000\u0000\u191a\u1915\u0001\u0000\u0000"+
56698 		"\u0000\u191a\u1916\u0001\u0000\u0000\u0000\u191a\u1917\u0001\u0000\u0000"+
56699 		"\u0000\u191b\u036b\u0001\u0000\u0000\u0000\u191c\u191d\u0007\\\u0000\u0000"+
56700 		"\u191d\u036d\u0001\u0000\u0000\u0000\u191e\u191f\u0003\u00ccf\u0000\u191f"+
56701 		"\u036f\u0001\u0000\u0000\u0000\u1920\u1926\u0005\u0287\u0000\u0000\u1921"+
56702 		"\u1924\u0003\u001c\u000e\u0000\u1922\u1923\u0005M\u0000\u0000\u1923\u1925"+
56703 		"\u0005\u0288\u0000\u0000\u1924\u1922\u0001\u0000\u0000\u0000\u1924\u1925"+
56704 		"\u0001\u0000\u0000\u0000\u1925\u1927\u0001\u0000\u0000\u0000\u1926\u1921"+
56705 		"\u0001\u0000\u0000\u0000\u1926\u1927\u0001\u0000\u0000\u0000\u1927\u0371"+
56706 		"\u0001\u0000\u0000\u0000\u1928\u1929\u00052\u0000\u0000\u1929\u1932\u0005"+
56707 		"\u00ec\u0000\u0000\u192a\u1933\u0003\u0374\u01ba\u0000\u192b\u1933\u0003"+
56708 		"\u0376\u01bb\u0000\u192c\u1933\u0003\u0378\u01bc\u0000\u192d\u1933\u0003"+
56709 		"\u037a\u01bd\u0000\u192e\u1933\u0003\u0380\u01c0\u0000\u192f\u1933\u0003"+
56710 		"\u0382\u01c1\u0000\u1930\u1933\u0003\u0384\u01c2\u0000\u1931\u1933\u0003"+
56711 		"\u038a\u01c5\u0000\u1932\u192a\u0001\u0000\u0000\u0000\u1932\u192b\u0001"+
56712 		"\u0000\u0000\u0000\u1932\u192c\u0001\u0000\u0000\u0000\u1932\u192d\u0001"+
56713 		"\u0000\u0000\u0000\u1932\u192e\u0001\u0000\u0000\u0000\u1932\u192f\u0001"+
56714 		"\u0000\u0000\u0000\u1932\u1930\u0001\u0000\u0000\u0000\u1932\u1931\u0001"+
56715 		"\u0000\u0000\u0000\u1932\u1933\u0001\u0000\u0000\u0000\u1933\u0373\u0001"+
56716 		"\u0000\u0000\u0000\u1934\u1938\u0003\u038a\u01c5\u0000\u1935\u1936\u0007"+
56717 		"]\u0000\u0000\u1936\u1937\u0005\u0111\u0000\u0000\u1937\u1939\u0003*\u0015"+
56718 		"\u0000\u1938\u1935\u0001\u0000\u0000\u0000\u1938\u1939\u0001\u0000\u0000"+
56719 		"\u0000\u1939\u1943\u0001\u0000\u0000\u0000\u193a\u193b\u0005M\u0000\u0000"+
56720 		"\u193b\u1940\u0003\u037e\u01bf\u0000\u193c\u193d\u0005%\u0000\u0000\u193d"+
56721 		"\u193f\u0003\u037e\u01bf\u0000\u193e\u193c\u0001\u0000\u0000\u0000\u193f"+
56722 		"\u1942\u0001\u0000\u0000\u0000\u1940\u193e\u0001\u0000\u0000\u0000\u1940"+
56723 		"\u1941\u0001\u0000\u0000\u0000\u1941\u1944\u0001\u0000\u0000\u0000\u1942"+
56724 		"\u1940\u0001\u0000\u0000\u0000\u1943\u193a\u0001\u0000\u0000\u0000\u1943"+
56725 		"\u1944\u0001\u0000\u0000\u0000\u1944\u0375\u0001\u0000\u0000\u0000\u1945"+
56726 		"\u194f\u0003\u0386\u01c3\u0000\u1946\u1947\u0005M\u0000\u0000\u1947\u194c"+
56727 		"\u0003\u037c\u01be\u0000\u1948\u1949\u0005%\u0000\u0000\u1949\u194b\u0003"+
56728 		"\u037c\u01be\u0000\u194a\u1948\u0001\u0000\u0000\u0000\u194b\u194e\u0001"+
56729 		"\u0000\u0000\u0000\u194c\u194a\u0001\u0000\u0000\u0000\u194c\u194d\u0001"+
56730 		"\u0000\u0000\u0000\u194d\u1950\u0001\u0000\u0000\u0000\u194e\u194c\u0001"+
56731 		"\u0000\u0000\u0000\u194f\u1946\u0001\u0000\u0000\u0000\u194f\u1950\u0001"+
56732 		"\u0000\u0000\u0000\u1950\u1967\u0001\u0000\u0000\u0000\u1951\u1952\u0003"+
56733 		"\u038a\u01c5\u0000\u1952\u1953\u0005M\u0000\u0000\u1953\u1954\u0005\u00d5"+
56734 		"\u0000\u0000\u1954\u1955\u0005\u0018\u0000\u0000\u1955\u195f\u0003\u001c"+
56735 		"\u000e\u0000\u1956\u1957\u0005%\u0000\u0000\u1957\u195c\u0003\u037c\u01be"+
56736 		"\u0000\u1958\u1959\u0005%\u0000\u0000\u1959\u195b\u0003\u037c\u01be\u0000"+
56737 		"\u195a\u1958\u0001\u0000\u0000\u0000\u195b\u195e\u0001\u0000\u0000\u0000"+
56738 		"\u195c\u195a\u0001\u0000\u0000\u0000\u195c\u195d\u0001\u0000\u0000\u0000"+
56739 		"\u195d\u1960\u0001\u0000\u0000\u0000\u195e\u195c\u0001\u0000\u0000\u0000"+
56740 		"\u195f\u1956\u0001\u0000\u0000\u0000\u195f\u1960\u0001\u0000\u0000\u0000"+
56741 		"\u1960\u1967\u0001\u0000\u0000\u0000\u1961\u1962\u0003\u0388\u01c4\u0000"+
56742 		"\u1962\u1963\u0005U\u0000\u0000\u1963\u1964\u0005\u0150\u0000\u0000\u1964"+
56743 		"\u1965\u0005\u028c\u0000\u0000\u1965\u1967\u0001\u0000\u0000\u0000\u1966"+
56744 		"\u1945\u0001\u0000\u0000\u0000\u1966\u1951\u0001\u0000\u0000\u0000\u1966"+
56745 		"\u1961\u0001\u0000\u0000\u0000\u1967\u0377\u0001\u0000\u0000\u0000\u1968"+
56746 		"\u196c\u0003\u0386\u01c3\u0000\u1969\u196a\u0007]\u0000\u0000\u196a\u196b"+
56747 		"\u0005\u0111\u0000\u0000\u196b\u196d\u0003\u0386\u01c3\u0000\u196c\u1969"+
56748 		"\u0001\u0000\u0000\u0000\u196c\u196d\u0001\u0000\u0000\u0000\u196d\u1974"+
56749 		"\u0001\u0000\u0000\u0000\u196e\u196f\u0003\u038a\u01c5\u0000\u196f\u1970"+
56750 		"\u0007]\u0000\u0000\u1970\u1971\u0005\u0111\u0000\u0000\u1971\u1972\u0003"+
56751 		"\u0386\u01c3\u0000\u1972\u1974\u0001\u0000\u0000\u0000\u1973\u1968\u0001"+
56752 		"\u0000\u0000\u0000\u1973\u196e\u0001\u0000\u0000\u0000\u1974\u197e\u0001"+
56753 		"\u0000\u0000\u0000\u1975\u1976\u0005M\u0000\u0000\u1976\u197b\u0003\u037e"+
56754 		"\u01bf\u0000\u1977\u1978\u0005%\u0000\u0000\u1978\u197a\u0003\u037e\u01bf"+
56755 		"\u0000\u1979\u1977\u0001\u0000\u0000\u0000\u197a\u197d\u0001\u0000\u0000"+
56756 		"\u0000\u197b\u1979\u0001\u0000\u0000\u0000\u197b\u197c\u0001\u0000\u0000"+
56757 		"\u0000\u197c\u197f\u0001\u0000\u0000\u0000\u197d\u197b\u0001\u0000\u0000"+
56758 		"\u0000\u197e\u1975\u0001\u0000\u0000\u0000\u197e\u197f\u0001\u0000\u0000"+
56759 		"\u0000\u197f\u0379\u0001\u0000\u0000\u0000\u1980\u1995\u0003\u038a\u01c5"+
56760 		"\u0000\u1981\u1982\u0005\u00d6\u0000\u0000\u1982\u198c\u0005\u0111\u0000"+
56761 		"\u0000\u1983\u1984\u0005M\u0000\u0000\u1984\u1989\u0003\u037e\u01bf\u0000"+
56762 		"\u1985\u1986\u0005%\u0000\u0000\u1986\u1988\u0003\u037e\u01bf\u0000\u1987"+
56763 		"\u1985\u0001\u0000\u0000\u0000\u1988\u198b\u0001\u0000\u0000\u0000\u1989"+
56764 		"\u1987\u0001\u0000\u0000\u0000\u1989\u198a\u0001\u0000\u0000\u0000\u198a"+
56765 		"\u198d\u0001\u0000\u0000\u0000\u198b\u1989\u0001\u0000\u0000\u0000\u198c"+
56766 		"\u1983\u0001\u0000\u0000\u0000\u198c\u198d\u0001\u0000\u0000\u0000\u198d"+
56767 		"\u1996\u0001\u0000\u0000\u0000\u198e\u198f\u0007]\u0000\u0000\u198f\u1990"+
56768 		"\u0005\u015b\u0000\u0000\u1990\u1996\u0003*\u0015\u0000\u1991\u1992\u0007"+
56769 		"]\u0000\u0000\u1992\u1993\u0005\u013b\u0000\u0000\u1993\u1994\u0005C\u0000"+
56770 		"\u0000\u1994\u1996\u0003*\u0015\u0000\u1995\u1981\u0001\u0000\u0000\u0000"+
56771 		"\u1995\u198e\u0001\u0000\u0000\u0000\u1995\u1991\u0001\u0000\u0000\u0000"+
56772 		"\u1996\u037b\u0001\u0000\u0000\u0000\u1997\u1998\u0005\u0289\u0000\u0000"+
56773 		"\u1998\u1999\u0005\u0018\u0000\u0000\u1999\u19a9\u00034\u001a\u0000\u199a"+
56774 		"\u199b\u0005\u0279\u0000\u0000\u199b\u199e\u0005\u0018\u0000\u0000\u199c"+
56775 		"\u199f\u0005\u0116\u0000\u0000\u199d\u199f\u0003*\u0015\u0000\u199e\u199c"+
56776 		"\u0001\u0000\u0000\u0000\u199e\u199d\u0001\u0000\u0000\u0000\u199f\u19a9"+
56777 		"\u0001\u0000\u0000\u0000\u19a0\u19a1\u0005\u028d\u0000\u0000\u19a1\u19a2"+
56778 		"\u0005\u0018\u0000\u0000\u19a2\u19a9\u0003\u03a4\u01d2\u0000\u19a3\u19a4"+
56779 		"\u0005\u028a\u0000\u0000\u19a4\u19a6\u0005\u0018\u0000\u0000\u19a5\u19a7"+
56780 		"\u0007\u0000\u0000\u0000\u19a6\u19a5\u0001\u0000\u0000\u0000\u19a6\u19a7"+
56781 		"\u0001\u0000\u0000\u0000\u19a7\u19a9\u0001\u0000\u0000\u0000\u19a8\u1997"+
56782 		"\u0001\u0000\u0000\u0000\u19a8\u199a\u0001\u0000\u0000\u0000\u19a8\u19a0"+
56783 		"\u0001\u0000\u0000\u0000\u19a8\u19a3\u0001\u0000\u0000\u0000\u19a9\u037d"+
56784 		"\u0001\u0000\u0000\u0000\u19aa\u19ab\u0005\u0289\u0000\u0000\u19ab\u19ac"+
56785 		"\u0005\u0018\u0000\u0000\u19ac\u19b9\u00034\u001a\u0000\u19ad\u19ae\u0005"+
56786 		"\u0279\u0000\u0000\u19ae\u19b1\u0005\u0018\u0000\u0000\u19af\u19b2\u0005"+
56787 		"\u0116\u0000\u0000\u19b0\u19b2\u0003*\u0015\u0000\u19b1\u19af\u0001\u0000"+
56788 		"\u0000\u0000\u19b1\u19b0\u0001\u0000\u0000\u0000\u19b2\u19b9\u0001\u0000"+
56789 		"\u0000\u0000\u19b3\u19b4\u0005\u028a\u0000\u0000\u19b4\u19b6\u0005\u0018"+
56790 		"\u0000\u0000\u19b5\u19b7\u0007\u0000\u0000\u0000\u19b6\u19b5\u0001\u0000"+
56791 		"\u0000\u0000\u19b6\u19b7\u0001\u0000\u0000\u0000\u19b7\u19b9\u0001\u0000"+
56792 		"\u0000\u0000\u19b8\u19aa\u0001\u0000\u0000\u0000\u19b8\u19ad\u0001\u0000"+
56793 		"\u0000\u0000\u19b8\u19b3\u0001\u0000\u0000\u0000\u19b9\u037f\u0001\u0000"+
56794 		"\u0000\u0000\u19ba\u19be\u0003\u038a\u01c5\u0000\u19bb\u19bc\u0007]\u0000"+
56795 		"\u0000\u19bc\u19bd\u0005\u0111\u0000\u0000\u19bd\u19bf\u0003*\u0015\u0000"+
56796 		"\u19be\u19bb\u0001\u0000\u0000\u0000\u19be\u19bf\u0001\u0000\u0000\u0000"+
56797 		"\u19bf\u19cf\u0001\u0000\u0000\u0000\u19c0\u19c1\u0005U\u0000\u0000\u19c1"+
56798 		"\u19c2\u0005\u0150\u0000\u0000\u19c2\u19cc\u0005\u028c\u0000\u0000\u19c3"+
56799 		"\u19c4\u0005M\u0000\u0000\u19c4\u19c9\u0003\u037e\u01bf\u0000\u19c5\u19c6"+
56800 		"\u0005%\u0000\u0000\u19c6\u19c8\u0003\u037e\u01bf\u0000\u19c7\u19c5\u0001"+
56801 		"\u0000\u0000\u0000\u19c8\u19cb\u0001\u0000\u0000\u0000\u19c9\u19c7\u0001"+
56802 		"\u0000\u0000\u0000\u19c9\u19ca\u0001\u0000\u0000\u0000\u19ca\u19cd\u0001"+
56803 		"\u0000\u0000\u0000\u19cb\u19c9\u0001\u0000\u0000\u0000\u19cc\u19c3\u0001"+
56804 		"\u0000\u0000\u0000\u19cc\u19cd\u0001\u0000\u0000\u0000\u19cd\u19cf\u0001"+
56805 		"\u0000\u0000\u0000\u19ce\u19ba\u0001\u0000\u0000\u0000\u19ce\u19c0\u0001"+
56806 		"\u0000\u0000\u0000\u19cf\u0381\u0001\u0000\u0000\u0000\u19d0\u19d6\u0003"+
56807 		"\u038a\u01c5\u0000\u19d1\u19d2\u0007]\u0000\u0000\u19d2\u19d3\u0005\u0111"+
56808 		"\u0000\u0000\u19d3\u19d7\u0003*\u0015\u0000\u19d4\u19d5\u0005\u00d6\u0000"+
56809 		"\u0000\u19d5\u19d7\u0005\u0111\u0000\u0000\u19d6\u19d1\u0001\u0000\u0000"+
56810 		"\u0000\u19d6\u19d4\u0001\u0000\u0000\u0000\u19d6\u19d7\u0001\u0000\u0000"+
56811 		"\u0000\u19d7\u19dc\u0001\u0000\u0000\u0000\u19d8\u19d9\u0005M\u0000\u0000"+
56812 		"\u19d9\u19da\u0005\u0289\u0000\u0000\u19da\u19db\u0005\u0018\u0000\u0000"+
56813 		"\u19db\u19dd\u00034\u001a\u0000\u19dc\u19d8\u0001\u0000\u0000\u0000\u19dc"+
56814 		"\u19dd\u0001\u0000\u0000\u0000\u19dd\u0383\u0001\u0000\u0000\u0000\u19de"+
56815 		"\u19df\u0003\u0388\u01c4\u0000\u19df\u19e0\u0005U\u0000\u0000\u19e0\u19e1"+
56816 		"\u0005\u0150\u0000\u0000\u19e1\u19e6\u0005\u028c\u0000\u0000\u19e2\u19e3"+
56817 		"\u0005M\u0000\u0000\u19e3\u19e4\u0005\u0289\u0000\u0000\u19e4\u19e5\u0005"+
56818 		"\u0018\u0000\u0000\u19e5\u19e7\u00034\u001a\u0000\u19e6\u19e2\u0001\u0000"+
56819 		"\u0000\u0000\u19e6\u19e7\u0001\u0000\u0000\u0000\u19e7\u0385\u0001\u0000"+
56820 		"\u0000\u0000\u19e8\u19e9\u0003\u038a\u01c5\u0000\u19e9\u0387\u0001\u0000"+
56821 		"\u0000\u0000\u19ea\u19eb\u0003\u038a\u01c5\u0000\u19eb\u0389\u0001\u0000"+
56822 		"\u0000\u0000\u19ec\u19ed\u0003\u038c\u01c6\u0000\u19ed\u038b\u0001\u0000"+
56823 		"\u0000\u0000\u19ee\u19f1\u0003*\u0015\u0000\u19ef\u19f0\u0005\u0014\u0000"+
56824 		"\u0000\u19f0\u19f2\u0003*\u0015\u0000\u19f1\u19ef\u0001\u0000\u0000\u0000"+
56825 		"\u19f1\u19f2\u0001\u0000\u0000\u0000\u19f2\u038d\u0001\u0000\u0000\u0000"+
56826 		"\u19f3\u19f4\u00054\u0000\u0000\u19f4\u19f6\u0005\u00ec\u0000\u0000\u19f5"+
56827 		"\u19f7\u0003\u00deo\u0000\u19f6\u19f5\u0001\u0000\u0000\u0000\u19f6\u19f7"+
56828 		"\u0001\u0000\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000\u0000\u19f8\u19f9"+
56829 		"\u0003\u038a\u01c5\u0000\u19f9\u038f\u0001\u0000\u0000\u0000\u19fa\u19fb"+
56830 		"\u00053\u0000\u0000\u19fb\u19fc\u0005\u00ec\u0000\u0000\u19fc\u1a09\u0003"+
56831 		"\u038a\u01c5\u0000\u19fd\u19fe\u0005M\u0000\u0000\u19fe\u1a03\u0003\u0392"+
56832 		"\u01c9\u0000\u19ff\u1a00\u0005%\u0000\u0000\u1a00\u1a02\u0003\u0392\u01c9"+
56833 		"\u0000\u1a01\u19ff\u0001\u0000\u0000\u0000\u1a02\u1a05\u0001\u0000\u0000"+
56834 		"\u0000\u1a03\u1a01\u0001\u0000\u0000\u0000\u1a03\u1a04\u0001\u0000\u0000"+
56835 		"\u0000\u1a04\u1a0a\u0001\u0000\u0000\u0000\u1a05\u1a03\u0001\u0000\u0000"+
56836 		"\u0000\u1a06\u1a07\u0005U\u0000\u0000\u1a07\u1a08\u0005\u0150\u0000\u0000"+
56837 		"\u1a08\u1a0a\u0005\u028c\u0000\u0000\u1a09\u19fd\u0001\u0000\u0000\u0000"+
56838 		"\u1a09\u1a06\u0001\u0000\u0000\u0000\u1a0a\u0391\u0001\u0000\u0000\u0000"+
56839 		"\u1a0b\u1a0c\u0005\u00aa\u0000\u0000\u1a0c\u1a0d\u0005\u0018\u0000\u0000"+
56840 		"\u1a0d\u1a2b\u0003\u038a\u01c5\u0000\u1a0e\u1a0f\u0005\u0289\u0000\u0000"+
56841 		"\u1a0f\u1a12\u0005\u0018\u0000\u0000\u1a10\u1a13\u00034\u001a\u0000\u1a11"+
56842 		"\u1a13\u0005l\u0000\u0000\u1a12\u1a10\u0001\u0000\u0000\u0000\u1a12\u1a11"+
56843 		"\u0001\u0000\u0000\u0000\u1a13\u1a2b\u0001\u0000\u0000\u0000\u1a14\u1a15"+
56844 		"\u0005\u0111\u0000\u0000\u1a15\u1a16\u0005\u0018\u0000\u0000\u1a16\u1a2b"+
56845 		"\u0003*\u0015\u0000\u1a17\u1a18\u0005\u00d5\u0000\u0000\u1a18\u1a19\u0005"+
56846 		"\u0018\u0000\u0000\u1a19\u1a1d\u0003\u001c\u000e\u0000\u1a1a\u1a1b\u0005"+
56847 		"\u028b\u0000\u0000\u1a1b\u1a1c\u0005\u0018\u0000\u0000\u1a1c\u1a1e\u0003"+
56848 		"\u001c\u000e\u0000\u1a1d\u1a1a\u0001\u0000\u0000\u0000\u1a1d\u1a1e\u0001"+
56849 		"\u0000\u0000\u0000\u1a1e\u1a2b\u0001\u0000\u0000\u0000\u1a1f\u1a20\u0005"+
56850 		"\u0279\u0000\u0000\u1a20\u1a23\u0005\u0018\u0000\u0000\u1a21\u1a24\u0005"+
56851 		"\u0116\u0000\u0000\u1a22\u1a24\u0003*\u0015\u0000\u1a23\u1a21\u0001\u0000"+
56852 		"\u0000\u0000\u1a23\u1a22\u0001\u0000\u0000\u0000\u1a24\u1a2b\u0001\u0000"+
56853 		"\u0000\u0000\u1a25\u1a26\u0005\u028a\u0000\u0000\u1a26\u1a28\u0005\u0018"+
56854 		"\u0000\u0000\u1a27\u1a29\u0007\u0000\u0000\u0000\u1a28\u1a27\u0001\u0000"+
56855 		"\u0000\u0000\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u1a2b\u0001\u0000"+
56856 		"\u0000\u0000\u1a2a\u1a0b\u0001\u0000\u0000\u0000\u1a2a\u1a0e\u0001\u0000"+
56857 		"\u0000\u0000\u1a2a\u1a14\u0001\u0000\u0000\u0000\u1a2a\u1a17\u0001\u0000"+
56858 		"\u0000\u0000\u1a2a\u1a1f\u0001\u0000\u0000\u0000\u1a2a\u1a25\u0001\u0000"+
56859 		"\u0000\u0000\u1a2b\u0393\u0001\u0000\u0000\u0000\u1a2c\u1a2d\u00052\u0000"+
56860 		"\u0000\u1a2d\u1a2e\u0005\u00ed\u0000\u0000\u1a2e\u1a31\u0003N\'\u0000"+
56861 		"\u1a2f\u1a30\u0005\u0282\u0000\u0000\u1a30\u1a32\u0003N\'\u0000\u1a31"+
56862 		"\u1a2f\u0001\u0000\u0000\u0000\u1a31\u1a32\u0001\u0000\u0000\u0000\u1a32"+
56863 		"\u0395\u0001\u0000\u0000\u0000\u1a33\u1a34\u00054\u0000\u0000\u1a34\u1a36"+
56864 		"\u0005\u00ed\u0000\u0000\u1a35\u1a37\u0003\u00deo\u0000\u1a36\u1a35\u0001"+
56865 		"\u0000\u0000\u0000\u1a36\u1a37\u0001\u0000\u0000\u0000\u1a37\u1a38\u0001"+
56866 		"\u0000\u0000\u0000\u1a38\u1a39\u0003N\'\u0000\u1a39\u0397\u0001\u0000"+
56867 		"\u0000\u0000\u1a3a\u1a3b\u00053\u0000\u0000\u1a3b\u1a3c\u0005\u00ed\u0000"+
56868 		"\u0000\u1a3c\u1a47\u0003N\'\u0000\u1a3d\u1a3e\u00059\u0000\u0000\u1a3e"+
56869 		"\u1a3f\u0005\u0295\u0000\u0000\u1a3f\u1a48\u0003\u031c\u018e\u0000\u1a40"+
56870 		"\u1a41\u00054\u0000\u0000\u1a41\u1a42\u0005\u0295\u0000\u0000\u1a42\u1a48"+
56871 		"\u0003\u031c\u018e\u0000\u1a43\u1a44\u0005M\u0000\u0000\u1a44\u1a45\u0005"+
56872 		"\u00aa\u0000\u0000\u1a45\u1a46\u0005\u0018\u0000\u0000\u1a46\u1a48\u0003"+
56873 		"N\'\u0000\u1a47\u1a3d\u0001\u0000\u0000\u0000\u1a47\u1a40\u0001\u0000"+
56874 		"\u0000\u0000\u1a47\u1a43\u0001\u0000\u0000\u0000\u1a48\u0399\u0001\u0000"+
56875 		"\u0000\u0000\u1a49\u1a4a\u00052\u0000\u0000\u1a4a\u1a4b\u0005\u0111\u0000"+
56876 		"\u0000\u1a4b\u1a51\u0003\u038c\u01c6\u0000\u1a4c\u1a52\u0003\u039c\u01ce"+
56877 		"\u0000\u1a4d\u1a52\u0003\u03aa\u01d5\u0000\u1a4e\u1a52\u0003\u03ae\u01d7"+
56878 		"\u0000\u1a4f\u1a52\u0003\u03b2\u01d9\u0000\u1a50\u1a52\u0003\u03b6\u01db"+
56879 		"\u0000\u1a51\u1a4c\u0001\u0000\u0000\u0000\u1a51\u1a4d\u0001\u0000\u0000"+
56880 		"\u0000\u1a51\u1a4e\u0001\u0000\u0000\u0000\u1a51\u1a4f\u0001\u0000\u0000"+
56881 		"\u0000\u1a51\u1a50\u0001\u0000\u0000\u0000\u1a52\u039b\u0001\u0000\u0000"+
56882 		"\u0000\u1a53\u1a54\u0005M\u0000\u0000\u1a54\u1a58\u0003\u039e\u01cf\u0000"+
56883 		"\u1a55\u1a56\u0005U\u0000\u0000\u1a56\u1a58\u0003\u03a6\u01d3\u0000\u1a57"+
56884 		"\u1a53\u0001\u0000\u0000\u0000\u1a57\u1a55\u0001\u0000\u0000\u0000\u1a58"+
56885 		"\u039d\u0001\u0000\u0000\u0000\u1a59\u1a5a\u0005\u00d5\u0000\u0000\u1a5a"+
56886 		"\u1a5f\u0005\u0018\u0000\u0000\u1a5b\u1a60\u0003\u001c\u000e\u0000\u1a5c"+
56887 		"\u1a5d\u0003\u03a2\u01d1\u0000\u1a5d\u1a5e\u0005\u0296\u0000\u0000\u1a5e"+
56888 		"\u1a60\u0001\u0000\u0000\u0000\u1a5f\u1a5b\u0001\u0000\u0000\u0000\u1a5f"+
56889 		"\u1a5c\u0001\u0000\u0000\u0000\u1a60\u1a62\u0001\u0000\u0000\u0000\u1a61"+
56890 		"\u1a63\u0005\u0297\u0000\u0000\u1a62\u1a61\u0001\u0000\u0000\u0000\u1a62"+
56891 		"\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a6d\u0001\u0000\u0000\u0000\u1a64"+
56892 		"\u1a65\u0005%\u0000\u0000\u1a65\u1a6a\u0003\u03a0\u01d0\u0000\u1a66\u1a67"+
56893 		"\u0005%\u0000\u0000\u1a67\u1a69\u0003\u03a0\u01d0\u0000\u1a68\u1a66\u0001"+
56894 		"\u0000\u0000\u0000\u1a69\u1a6c\u0001\u0000\u0000\u0000\u1a6a\u1a68\u0001"+
56895 		"\u0000\u0000\u0000\u1a6a\u1a6b\u0001\u0000\u0000\u0000\u1a6b\u1a6e\u0001"+
56896 		"\u0000\u0000\u0000\u1a6c\u1a6a\u0001\u0000\u0000\u0000\u1a6d\u1a64\u0001"+
56897 		"\u0000\u0000\u0000\u1a6d\u1a6e\u0001\u0000\u0000\u0000\u1a6e\u039f\u0001"+
56898 		"\u0000\u0000\u0000\u1a6f\u1a70\u0005\u028d\u0000\u0000\u1a70\u1a71\u0005"+
56899 		"\u0018\u0000\u0000\u1a71\u1a82\u0003\u03a4\u01d2\u0000\u1a72\u1a73\u0005"+
56900 		"\u0298\u0000\u0000\u1a73\u1a74\u0005\u0018\u0000\u0000\u1a74\u1a82\u0003"+
56901 		"2\u0019\u0000\u1a75\u1a76\u0005\u0279\u0000\u0000\u1a76\u1a77\u0005\u0018"+
56902 		"\u0000\u0000\u1a77\u1a82\u0003*\u0015\u0000\u1a78\u1a79\u0005\u0299\u0000"+
56903 		"\u0000\u1a79\u1a7a\u0005\u0018\u0000\u0000\u1a7a\u1a82\u0007\u0000\u0000"+
56904 		"\u0000\u1a7b\u1a7c\u0005\u029a\u0000\u0000\u1a7c\u1a7d\u0005\u0018\u0000"+
56905 		"\u0000\u1a7d\u1a82\u0007\u0000\u0000\u0000\u1a7e\u1a7f\u0005\u0145\u0000"+
56906 		"\u0000\u1a7f\u1a80\u0005\u0018\u0000\u0000\u1a80\u1a82\u0003*\u0015\u0000"+
56907 		"\u1a81\u1a6f\u0001\u0000\u0000\u0000\u1a81\u1a72\u0001\u0000\u0000\u0000"+
56908 		"\u1a81\u1a75\u0001\u0000\u0000\u0000\u1a81\u1a78\u0001\u0000\u0000\u0000"+
56909 		"\u1a81\u1a7b\u0001\u0000\u0000\u0000\u1a81\u1a7e\u0001\u0000\u0000\u0000"+
56910 		"\u1a82\u03a1\u0001\u0000\u0000\u0000\u1a83\u1a84\u0005\u02bc\u0000\u0000"+
56911 		"\u1a84\u03a3\u0001\u0000\u0000\u0000\u1a85\u1a86\u0007^\u0000\u0000\u1a86"+
56912 		"\u03a5\u0001\u0000\u0000\u0000\u1a87\u1a91\u0005\u029b\u0000\u0000\u1a88"+
56913 		"\u1a89\u0005M\u0000\u0000\u1a89\u1a8e\u0003\u03a8\u01d4\u0000\u1a8a\u1a8b"+
56914 		"\u0005%\u0000\u0000\u1a8b\u1a8d\u0003\u03a8\u01d4\u0000\u1a8c\u1a8a\u0001"+
56915 		"\u0000\u0000\u0000\u1a8d\u1a90\u0001\u0000\u0000\u0000\u1a8e\u1a8c\u0001"+
56916 		"\u0000\u0000\u0000\u1a8e\u1a8f\u0001\u0000\u0000\u0000\u1a8f\u1a92\u0001"+
56917 		"\u0000\u0000\u0000\u1a90\u1a8e\u0001\u0000\u0000\u0000\u1a91\u1a88\u0001"+
56918 		"\u0000\u0000\u0000\u1a91\u1a92\u0001\u0000\u0000\u0000\u1a92\u1a99\u0001"+
56919 		"\u0000\u0000\u0000\u1a93\u1a94\u0005\u015b\u0000\u0000\u1a94\u1a99\u0003"+
56920 		"*\u0015\u0000\u1a95\u1a96\u0005\u013b\u0000\u0000\u1a96\u1a97\u0005C\u0000"+
56921 		"\u0000\u1a97\u1a99\u0003*\u0015\u0000\u1a98\u1a87\u0001\u0000\u0000\u0000"+
56922 		"\u1a98\u1a93\u0001\u0000\u0000\u0000\u1a98\u1a95\u0001\u0000\u0000\u0000"+
56923 		"\u1a99\u03a7\u0001\u0000\u0000\u0000\u1a9a\u1a9b\u0005\u0298\u0000\u0000"+
56924 		"\u1a9b\u1a9c\u0005\u0018\u0000\u0000\u1a9c\u1aa1\u00032\u0019\u0000\u1a9d"+
56925 		"\u1a9e\u0005\u0279\u0000\u0000\u1a9e\u1a9f\u0005\u0018\u0000\u0000\u1a9f"+
56926 		"\u1aa1\u0003*\u0015\u0000\u1aa0\u1a9a\u0001\u0000\u0000\u0000\u1aa0\u1a9d"+
56927 		"\u0001\u0000\u0000\u0000\u1aa1\u03a9\u0001\u0000\u0000\u0000\u1aa2\u1aa3"+
56928 		"\u0005U\u0000\u0000\u1aa3\u1aa4\u0005\u0150\u0000\u0000\u1aa4\u1aaf\u0005"+
56929 		"\u028c\u0000\u0000\u1aa5\u1aa6\u0005M\u0000\u0000\u1aa6\u1aab\u0003\u03ac"+
56930 		"\u01d6\u0000\u1aa7\u1aa8\u0005%\u0000\u0000\u1aa8\u1aaa\u0003\u03ac\u01d6"+
56931 		"\u0000\u1aa9\u1aa7\u0001\u0000\u0000\u0000\u1aaa\u1aad\u0001\u0000\u0000"+
56932 		"\u0000\u1aab\u1aa9\u0001\u0000\u0000\u0000\u1aab\u1aac\u0001\u0000\u0000"+
56933 		"\u0000\u1aac\u1aaf\u0001\u0000\u0000\u0000\u1aad\u1aab\u0001\u0000\u0000"+
56934 		"\u0000\u1aae\u1aa2\u0001\u0000\u0000\u0000\u1aae\u1aa5\u0001\u0000\u0000"+
56935 		"\u0000\u1aaf\u03ab\u0001\u0000\u0000\u0000\u1ab0\u1ab1\u0005\u00d5\u0000"+
56936 		"\u0000\u1ab1\u1ab2\u0005\u0018\u0000\u0000\u1ab2\u1ab7\u0003\u001c\u000e"+
56937 		"\u0000\u1ab3\u1ab4\u0005%\u0000\u0000\u1ab4\u1ab5\u0005\u028d\u0000\u0000"+
56938 		"\u1ab5\u1ab6\u0005\u0018\u0000\u0000\u1ab6\u1ab8\u0003\u03a4\u01d2\u0000"+
56939 		"\u1ab7\u1ab3\u0001\u0000\u0000\u0000\u1ab7\u1ab8\u0001\u0000\u0000\u0000"+
56940 		"\u1ab8\u03ad\u0001\u0000\u0000\u0000\u1ab9\u1aba\u0005U\u0000\u0000\u1aba"+
56941 		"\u1abb\u0005\u0150\u0000\u0000\u1abb\u1abd\u0005\u028c\u0000\u0000\u1abc"+
56942 		"\u1ab9\u0001\u0000\u0000\u0000\u1abc\u1abd\u0001\u0000\u0000\u0000\u1abd"+
56943 		"\u1abe\u0001\u0000\u0000\u0000\u1abe\u1abf\u0005M\u0000\u0000\u1abf\u1ac4"+
56944 		"\u0003\u03b0\u01d8\u0000\u1ac0\u1ac1\u0005%\u0000\u0000\u1ac1\u1ac3\u0003"+
56945 		"\u03b0\u01d8\u0000\u1ac2\u1ac0\u0001\u0000\u0000\u0000\u1ac3\u1ac6\u0001"+
56946 		"\u0000\u0000\u0000\u1ac4\u1ac2\u0001\u0000\u0000\u0000\u1ac4\u1ac5\u0001"+
56947 		"\u0000\u0000\u0000\u1ac5\u03af\u0001\u0000\u0000\u0000\u1ac6\u1ac4\u0001"+
56948 		"\u0000\u0000\u0000\u1ac7\u1ac8\u0005\u00d5\u0000\u0000\u1ac8\u1ac9\u0005"+
56949 		"\u0018\u0000\u0000\u1ac9\u1ad4\u0003\u001c\u000e\u0000\u1aca\u1acb\u0005"+
56950 		"\u028d\u0000\u0000\u1acb\u1acc\u0005\u0018\u0000\u0000\u1acc\u1ad4\u0003"+
56951 		"\u03a4\u01d2\u0000\u1acd\u1ace\u0005\u0298\u0000\u0000\u1ace\u1acf\u0005"+
56952 		"\u0018\u0000\u0000\u1acf\u1ad4\u00032\u0019\u0000\u1ad0\u1ad1\u0005\u0279"+
56953 		"\u0000\u0000\u1ad1\u1ad2\u0005\u0018\u0000\u0000\u1ad2\u1ad4\u0003*\u0015"+
56954 		"\u0000\u1ad3\u1ac7\u0001\u0000\u0000\u0000\u1ad3\u1aca\u0001\u0000\u0000"+
56955 		"\u0000\u1ad3\u1acd\u0001\u0000\u0000\u0000\u1ad3\u1ad0\u0001\u0000\u0000"+
56956 		"\u0000\u1ad4\u03b1\u0001\u0000\u0000\u0000\u1ad5\u1ad6\u0005M\u0000\u0000"+
56957 		"\u1ad6\u1ad7\u0003\u03b4\u01da\u0000\u1ad7\u03b3\u0001\u0000\u0000\u0000"+
56958 		"\u1ad8\u1ad9\u0005\u00d5\u0000\u0000\u1ad9\u1ada\u0005\u0018\u0000\u0000"+
56959 		"\u1ada\u1adf\u0003\u001c\u000e\u0000\u1adb\u1adc\u0005%\u0000\u0000\u1adc"+
56960 		"\u1add\u0005\u028d\u0000\u0000\u1add\u1ade\u0005\u0018\u0000\u0000\u1ade"+
56961 		"\u1ae0\u0003\u03a4\u01d2\u0000\u1adf\u1adb\u0001\u0000\u0000\u0000\u1adf"+
56962 		"\u1ae0\u0001\u0000\u0000\u0000\u1ae0\u03b5\u0001\u0000\u0000\u0000\u1ae1"+
56963 		"\u1ae2\u0005M\u0000\u0000\u1ae2\u1ae6\u0003\u03b8\u01dc\u0000\u1ae3\u1ae4"+
56964 		"\u0005U\u0000\u0000\u1ae4\u1ae6\u0005\u029b\u0000\u0000\u1ae5\u1ae1\u0001"+
56965 		"\u0000\u0000\u0000\u1ae5\u1ae3\u0001\u0000\u0000\u0000\u1ae6\u03b7\u0001"+
56966 		"\u0000\u0000\u0000\u1ae7\u1ae8\u0005\u00d5\u0000\u0000\u1ae8\u1ae9\u0005"+
56967 		"\u0018\u0000\u0000\u1ae9\u1aeb\u0003\u001c\u000e\u0000\u1aea\u1aec\u0005"+
56968 		"\u0297\u0000\u0000\u1aeb\u1aea\u0001\u0000\u0000\u0000\u1aeb\u1aec\u0001"+
56969 		"\u0000\u0000\u0000\u1aec\u1af6\u0001\u0000\u0000\u0000\u1aed\u1aee\u0005"+
56970 		"%\u0000\u0000\u1aee\u1af3\u0003\u03ba\u01dd\u0000\u1aef\u1af0\u0005%\u0000"+
56971 		"\u0000\u1af0\u1af2\u0003\u03ba\u01dd\u0000\u1af1\u1aef\u0001\u0000\u0000"+
56972 		"\u0000\u1af2\u1af5\u0001\u0000\u0000\u0000\u1af3\u1af1\u0001\u0000\u0000"+
56973 		"\u0000\u1af3\u1af4\u0001\u0000\u0000\u0000\u1af4\u1af7\u0001\u0000\u0000"+
56974 		"\u0000\u1af5\u1af3\u0001\u0000\u0000\u0000\u1af6\u1aed\u0001\u0000\u0000"+
56975 		"\u0000\u1af6\u1af7\u0001\u0000\u0000\u0000\u1af7\u03b9\u0001\u0000\u0000"+
56976 		"\u0000\u1af8\u1af9\u0005\u0299\u0000\u0000\u1af9\u1afa\u0005\u0018\u0000"+
56977 		"\u0000\u1afa\u1aff\u0007\u0000\u0000\u0000\u1afb\u1afc\u0005\u029a\u0000"+
56978 		"\u0000\u1afc\u1afd\u0005\u0018\u0000\u0000\u1afd\u1aff\u0007\u0000\u0000"+
56979 		"\u0000\u1afe\u1af8\u0001\u0000\u0000\u0000\u1afe\u1afb\u0001\u0000\u0000"+
56980 		"\u0000\u1aff\u03bb\u0001\u0000\u0000\u0000\u1b00\u1b01\u00054\u0000\u0000"+
56981 		"\u1b01\u1b02\u0005\u0111\u0000\u0000\u1b02\u1b03\u0003\u038c\u01c6\u0000"+
56982 		"\u1b03\u03bd\u0001\u0000\u0000\u0000\u1b04\u1b05\u00053\u0000\u0000\u1b05"+
56983 		"\u1b06\u0005\u0111\u0000\u0000\u1b06\u1b12\u0003\u038c\u01c6\u0000\u1b07"+
56984 		"\u1b13\u0003\u03c0\u01e0\u0000\u1b08\u1b09\u0005M\u0000\u0000\u1b09\u1b0e"+
56985 		"\u0003\u03c2\u01e1\u0000\u1b0a\u1b0b\u0005%\u0000\u0000\u1b0b\u1b0d\u0003"+
56986 		"\u03c2\u01e1\u0000\u1b0c\u1b0a\u0001\u0000\u0000\u0000\u1b0d\u1b10\u0001"+
56987 		"\u0000\u0000\u0000\u1b0e\u1b0c\u0001\u0000\u0000\u0000\u1b0e\u1b0f\u0001"+
56988 		"\u0000\u0000\u0000\u1b0f\u1b13\u0001\u0000\u0000\u0000\u1b10\u1b0e\u0001"+
56989 		"\u0000\u0000\u0000\u1b11\u1b13\u0003\u03c6\u01e3\u0000\u1b12\u1b07\u0001"+
56990 		"\u0000\u0000\u0000\u1b12\u1b08\u0001\u0000\u0000\u0000\u1b12\u1b11\u0001"+
56991 		"\u0000\u0000\u0000\u1b13\u03bf\u0001\u0000\u0000\u0000\u1b14\u1b15\u0007"+
56992 		"(\u0000\u0000\u1b15\u03c1\u0001\u0000\u0000\u0000\u1b16\u1b17\u0005\u00d5"+
56993 		"\u0000\u0000\u1b17\u1b1c\u0005\u0018\u0000\u0000\u1b18\u1b1d\u0003\u001c"+
56994 		"\u000e\u0000\u1b19\u1b1a\u0003\u03a2\u01d1\u0000\u1b1a\u1b1b\u0005\u0296"+
56995 		"\u0000\u0000\u1b1b\u1b1d\u0001\u0000\u0000\u0000\u1b1c\u1b18\u0001\u0000"+
56996 		"\u0000\u0000\u1b1c\u1b19\u0001\u0000\u0000\u0000\u1b1d\u1b25\u0001\u0000"+
56997 		"\u0000\u0000\u1b1e\u1b1f\u0005\u028b\u0000\u0000\u1b1f\u1b20\u0005\u0018"+
56998 		"\u0000\u0000\u1b20\u1b26\u0003\u001c\u000e\u0000\u1b21\u1b23\u0003\u03c4"+
56999 		"\u01e2\u0000\u1b22\u1b24\u0003\u03c4\u01e2\u0000\u1b23\u1b22\u0001\u0000"+
57000 		"\u0000\u0000\u1b23\u1b24\u0001\u0000\u0000\u0000\u1b24\u1b26\u0001\u0000"+
57001 		"\u0000\u0000\u1b25\u1b1e\u0001\u0000\u0000\u0000\u1b25\u1b21\u0001\u0000"+
57002 		"\u0000\u0000\u1b25\u1b26\u0001\u0000\u0000\u0000\u1b26\u1b3c\u0001\u0000"+
57003 		"\u0000\u0000\u1b27\u1b28\u0005\u0298\u0000\u0000\u1b28\u1b29\u0005\u0018"+
57004 		"\u0000\u0000\u1b29\u1b3c\u00032\u0019\u0000\u1b2a\u1b2b\u0005\u0279\u0000"+
57005 		"\u0000\u1b2b\u1b2c\u0005\u0018\u0000\u0000\u1b2c\u1b3c\u0003*\u0015\u0000"+
57006 		"\u1b2d\u1b2e\u0005\u00aa\u0000\u0000\u1b2e\u1b2f\u0005\u0018\u0000\u0000"+
57007 		"\u1b2f\u1b3c\u0003\u038c\u01c6\u0000\u1b30\u1b31\u0005\u029a\u0000\u0000"+
57008 		"\u1b31\u1b32\u0005\u0018\u0000\u0000\u1b32\u1b3c\u0007\u0000\u0000\u0000"+
57009 		"\u1b33\u1b34\u0005\u0299\u0000\u0000\u1b34\u1b35\u0005\u0018\u0000\u0000"+
57010 		"\u1b35\u1b3c\u0007\u0000\u0000\u0000\u1b36\u1b37\u0005\u0145\u0000\u0000"+
57011 		"\u1b37\u1b38\u0005\u0018\u0000\u0000\u1b38\u1b3c\u0003*\u0015\u0000\u1b39"+
57012 		"\u1b3a\u0005\u00e8\u0000\u0000\u1b3a\u1b3c\u0005\u0145\u0000\u0000\u1b3b"+
57013 		"\u1b16\u0001\u0000\u0000\u0000\u1b3b\u1b27\u0001\u0000\u0000\u0000\u1b3b"+
57014 		"\u1b2a\u0001\u0000\u0000\u0000\u1b3b\u1b2d\u0001\u0000\u0000\u0000\u1b3b"+
57015 		"\u1b30\u0001\u0000\u0000\u0000\u1b3b\u1b33\u0001\u0000\u0000\u0000\u1b3b"+
57016 		"\u1b36\u0001\u0000\u0000\u0000\u1b3b\u1b39\u0001\u0000\u0000\u0000\u1b3c"+
57017 		"\u03c3\u0001\u0000\u0000\u0000\u1b3d\u1b3e\u0007_\u0000\u0000\u1b3e\u03c5"+
57018 		"\u0001\u0000\u0000\u0000\u1b3f\u1b40\u00059\u0000\u0000\u1b40\u1b41\u0005"+
57019 		"\u0145\u0000\u0000\u1b41\u1b46\u0003*\u0015\u0000\u1b42\u1b43\u00054\u0000"+
57020 		"\u0000\u1b43\u1b44\u0005\u0145\u0000\u0000\u1b44\u1b46\u0003*\u0015\u0000"+
57021 		"\u1b45\u1b3f\u0001\u0000\u0000\u0000\u1b45\u1b42\u0001\u0000\u0000\u0000"+
57022 		"\u1b46\u03c7\u0001\u0000\u0000\u0000\u1b47\u1b4c\u0005\u029d\u0000\u0000"+
57023 		"\u1b48\u1b49\u0005M\u0000\u0000\u1b49\u1b4a\u0005\u029e\u0000\u0000\u1b4a"+
57024 		"\u1b4b\u0005\u0018\u0000\u0000\u1b4b\u1b4d\u0003\u00d0h\u0000\u1b4c\u1b48"+
57025 		"\u0001\u0000\u0000\u0000\u1b4c\u1b4d\u0001\u0000\u0000\u0000\u1b4d\u03c9"+
57026 		"\u0001\u0000\u0000\u0000\u032b\u0405\u0408\u0418\u0424\u042a\u042c\u042e"+
57027 		"\u0435\u043b\u043d\u0445\u0449\u0451\u0455\u045b\u0466\u046b\u0476\u0482"+
57028 		"\u0486\u0493\u049a\u049f\u04a4\u04ab\u04b2\u04bb\u04c0\u04c2\u04c9\u04d4"+
57029 		"\u04d8\u04e9\u04f4\u04fa\u0501\u0505\u050f\u0515\u0517\u051c\u0529\u0533"+
57030 		"\u0535\u0544\u0553\u0555\u055c\u0563\u056c\u0573\u057c\u0582\u0585\u05a8"+
57031 		"\u05aa\u05b6\u05be\u05c4\u05ce\u05d5\u05db\u05e0\u05e7\u05eb\u05f6\u0606"+
57032 		"\u0611\u0616\u0621\u0625\u062c\u0633\u0637\u063c\u063f\u064f\u0658\u0664"+
57033 		"\u0666\u066b\u066f\u0672\u0677\u0680\u0685\u068d\u0699\u06a2\u06a8\u06b0"+
57034 		"\u06b3\u06b6\u06c1\u06c9\u06d2\u06da\u06e2\u06e6\u06f3\u06f5\u06fe\u0713"+
57035 		"\u0718\u0724\u0731\u073a\u0747\u075a\u0763\u0767\u0780\u078a\u0794\u079d"+
57036 		"\u07ab\u07b3\u07b9\u07c1\u07cc\u07d3\u07dd\u07e2\u0803\u080c\u080f\u0816"+
57037 		"\u081d\u0824\u082d\u0834\u083a\u0841\u0847\u084e\u0854\u085b\u0861\u0868"+
57038 		"\u086f\u0871\u0876\u087d\u0887\u0893\u089a\u089e\u08a0\u08a3\u08a7\u08aa"+
57039 		"\u08b0\u08b5\u08c0\u08c4\u08c6\u08c9\u08ce\u08dd\u08e1\u08ed\u08f2\u08fb"+
57040 		"\u0902\u0907\u0916\u0920\u092b\u092e\u093a\u093e\u0950\u0955\u0959\u095e"+
57041 		"\u0962\u0969\u096e\u0976\u097f\u0983\u0987\u098a\u098d\u0990\u099e\u09a3"+
57042 		"\u09a8\u09ba\u09bc\u09c7\u09cf\u09d4\u09dd\u09e4\u09ea\u09f3\u09f6\u09f9"+
57043 		"\u09fc\u0a05\u0a0d\u0a16\u0a1d\u0a20\u0a28\u0a2a\u0a2d\u0a37\u0a3c\u0a41"+
57044 		"\u0a45\u0a48\u0a4c\u0a4f\u0a54\u0a5c\u0a65\u0a6d\u0a70\u0a73\u0a76\u0a7c"+
57045 		"\u0a80\u0a88\u0a9e\u0aa0\u0aa5\u0aa7\u0aae\u0ab0\u0ab4\u0abc\u0aca\u0ad3"+
57046 		"\u0ae2\u0ae8\u0aec\u0af3\u0b07\u0b10\u0b13\u0b29\u0b2b\u0b36\u0b46\u0b4b"+
57047 		"\u0b4f\u0b54\u0b5b\u0b65\u0b6c\u0b6f\u0b7a\u0b7e\u0b83\u0b89\u0b8e\u0b91"+
57048 		"\u0b9c\u0ba5\u0ba9\u0bb8\u0bbf\u0bcb\u0bce\u0bd2\u0bd6\u0bdf\u0be2\u0be5"+
57049 		"\u0bec\u0bf1\u0bfa\u0c0e\u0c10\u0c16\u0c1d\u0c22\u0c29\u0c2d\u0c33\u0c39"+
57050 		"\u0c3e\u0c44\u0c4b\u0c51\u0c5a\u0c61\u0c63\u0c69\u0c6c\u0c6f\u0c74\u0c7b"+
57051 		"\u0c84\u0c89\u0c92\u0c94\u0c99\u0ca2\u0ca4\u0ca7\u0cb9\u0cbb\u0cc5\u0ccc"+
57052 		"\u0ccf\u0cd3\u0cdb\u0cde\u0ce2\u0ce9\u0cf0\u0cfb\u0d17\u0d1f\u0d31\u0d33"+
57053 		"\u0d3a\u0d3d\u0d3f\u0d46\u0d48\u0d4d\u0d54\u0d59\u0d5c\u0d60\u0d69\u0d6c"+
57054 		"\u0d74\u0d78\u0d7c\u0d81\u0d86\u0d8a\u0d95\u0d9c\u0da2\u0da6\u0daa\u0db2"+
57055 		"\u0db4\u0db7\u0dbe\u0dc3\u0dcc\u0dd1\u0dd9\u0de0\u0de8\u0df1\u0dfd\u0e0d"+
57056 		"\u0e10\u0e12\u0e15\u0e18\u0e1b\u0e1e\u0e30\u0e35\u0e3a\u0e3f\u0e42\u0e46"+
57057 		"\u0e4e\u0e5a\u0e5d\u0e60\u0e6f\u0e72\u0e75\u0e79\u0e7d\u0e87\u0e8a\u0e8d"+
57058 		"\u0e98\u0e9d\u0ea3\u0ea7\u0eaa\u0eb5\u0eb8\u0ebd\u0ebf\u0ecb\u0ece\u0ed5"+
57059 		"\u0ed8\u0edc\u0ee0\u0ee3\u0ee6\u0eea\u0ef5\u0ef8\u0eff\u0f02\u0f06\u0f0d"+
57060 		"\u0f12\u0f1d\u0f22\u0f24\u0f31\u0f3c\u0f44\u0f47\u0f4b\u0f51\u0f5b\u0f65"+
57061 		"\u0f6a\u0f76\u0f7c\u0f7f\u0f82\u0f85\u0f88\u0f8b\u0f8e\u0f92\u0f97\u0f9e"+
57062 		"\u0fa5\u0fb2\u0fbe\u0fc4\u0fcd\u0fd0\u0fd4\u0fd8\u0fe1\u0fe6\u0fef\u0ff1"+
57063 		"\u0ff6\u0ff8\u0fff\u100a\u1013\u101a\u101c\u1025\u102a\u1031\u1038\u104a"+
57064 		"\u104f\u1053\u106e\u1071\u107a\u1093\u1096\u1098\u109d\u10a5\u10ba\u10bc"+
57065 		"\u10c5\u10c8\u10d7\u10dc\u10e5\u10f9\u10fc\u1100\u110c\u110e\u111b\u111d"+
57066 		"\u1127\u1154\u115a\u1163\u1172\u1176\u117f\u1185\u118f\u1198\u11a3\u11af"+
57067 		"\u11b1\u11b9\u11c7\u11cf\u11d4\u11d6\u11df\u11e5\u11fa\u1201\u1209\u120e"+
57068 		"\u1210\u1239\u123e\u124d\u1255\u126c\u1275\u127d\u1288\u128d\u1295\u12a0"+
57069 		"\u12ab\u12b4\u12bb\u12bf\u12c5\u12da\u12e8\u12eb\u12f6\u12fb\u12fe\u1302"+
57070 		"\u1305\u1309\u130c\u1312\u1315\u1318\u131e\u1321\u1329\u132d\u1330\u1335"+
57071 		"\u1340\u1343\u1346\u134a\u134f\u1353\u135f\u1363\u136b\u1372\u1376\u1379"+
57072 		"\u137d\u1381\u1384\u1387\u138b\u138e\u1391\u1395\u1398\u139b\u13a6\u13aa"+
57073 		"\u13af\u13b3\u13bb\u13bf\u13c4\u13c8\u13cc\u13d0\u13d3\u13d6\u13d9\u13dc"+
57074 		"\u13df\u13e6\u13e8\u13ee\u13f6\u13fa\u13fe\u1401\u1404\u1406\u140a\u140e"+
57075 		"\u1411\u1415\u141f\u1422\u1424\u1428\u1437\u143e\u1443\u1446\u144a\u144e"+
57076 		"\u1452\u1455\u145b\u145e\u1461\u1467\u146a\u146e\u1473\u1479\u147b\u1481"+
57077 		"\u148d\u149f\u14a4\u14ac\u14b1\u14b3\u14ba\u14c1\u14c4\u14cc\u14f6\u14f8"+
57078 		"\u150d\u1514\u154c\u1552\u155a\u155d\u1567\u1569\u156b\u1570\u1572\u1574"+
57079 		"\u157a\u157c\u1583\u1589\u158b\u158d\u158f\u1594\u1598\u15a0\u15a2\u15ac"+
57080 		"\u15ae\u15b2\u15b6\u15b8\u15bd\u15bf\u15c2\u15cb\u15d5\u15e1\u15e6\u15ee"+
57081 		"\u15f4\u15f8\u15fd\u1605\u160b\u160f\u1614\u1618\u161f\u1628\u162f\u1636"+
57082 		"\u163e\u1642\u1647\u164f\u1653\u1657\u165c\u1664\u1668\u166d\u1672\u167a"+
57083 		"\u167e\u1682\u1687\u168f\u1693\u169b\u16b0\u16c2\u16cd\u16e2\u16fc\u1711"+
57084 		"\u1715\u171a\u1723\u1725\u1737\u174b\u1756\u1769\u176d\u1775\u1779\u1784"+
57085 		"\u17a0\u17a6\u17c3\u17ca\u17ce\u17d3\u17dd\u17e8\u17f2\u17fb\u1811\u181e"+
57086 		"\u1825\u1831\u183e\u184b\u1856\u1862\u1868\u186e\u1874\u1880\u188d\u189a"+
57087 		"\u18a6\u18ac\u18b2\u18b9\u18bd\u18ca\u18d7\u18e0\u18ea\u191a\u1924\u1926"+
57088 		"\u1932\u1938\u1940\u1943\u194c\u194f\u195c\u195f\u1966\u196c\u1973\u197b"+
57089 		"\u197e\u1989\u198c\u1995\u199e\u19a6\u19a8\u19b1\u19b6\u19b8\u19be\u19c9"+
57090 		"\u19cc\u19ce\u19d6\u19dc\u19e6\u19f1\u19f6\u1a03\u1a09\u1a12\u1a1d\u1a23"+
57091 		"\u1a28\u1a2a\u1a31\u1a36\u1a47\u1a51\u1a57\u1a5f\u1a62\u1a6a\u1a6d\u1a81"+
57092 		"\u1a8e\u1a91\u1a98\u1aa0\u1aab\u1aae\u1ab7\u1abc\u1ac4\u1ad3\u1adf\u1ae5"+
57093 		"\u1aeb\u1af3\u1af6\u1afe\u1b0e\u1b12\u1b1c\u1b23\u1b25\u1b3b\u1b45\u1b4c";
57094 	public static final String _serializedATN = Utils.join(
57095 		new String[] {
57096 			_serializedATNSegment0,
57097 			_serializedATNSegment1,
57098 			_serializedATNSegment2
57099 		},
57100 		""
57101 	);
57102 	public static final ATN _ATN =
57103 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
57104 	static {
57105 		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
57106 		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
57107 			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
57108 		}
57109 	}
57110 }